|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『楼 主』:
[已解决] 关于计算字符串长度的批处理除BUG
防沉迷系统中的一部分:时间设置
以下批处理流程:
1、输入使用次数;
2、输入时间段;
3、计算时间段长度。
但是得不到想要的结果,请各位朋友帮忙看一下,应如何修改。谢谢!
@echo off
:start
cls
set /p nth=请输入每天使用电脑的次数[1-5]:
if %nth% equ 0 cls&echo 没有限制,随意使用。&ping /n 3 127.1>nul&exit
if %nth% gtr 5 cls&echo 次数太多,返回重试!&ping /n 3 127.1>nul&goto start
:input
for /l %%i in (1,1,%nth%) do set /p nth%%i=请输入第 %%i 次使用时间段[xx:xx:xx-xx:xx:xx]:
call :length
:length
Setlocal EnableDelayedExpansion
set nth
for /l %%i in (1,1,!nth!) do for /l %%j in (1,1,20) do if "!nth%%i:~%%j,1!"=="" if %%j neq 17 cls&echo 时间段设置出错,返回重试。&ping /n 3 127.1>nul&cls&goto input
pause>nul
Endlocal 5楼正解
[ Last edited by chishingchan on 2008-11-23 at 12:01 ]
|
|
2008-4-17 10:04 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
2 楼』:
call :length %%i
for /l %%i in (1,1,!nth!) do for /l %%j in (1,1,20) do if "!nth%1:~%%j,1!"=="" if %%j neq 17
[ Last edited by moniuming on 2008-4-17 at 10:15 PM ]
|
|
2008-4-17 21:03 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
『第
3 楼』:
根据2楼的方案,还是不行。
@echo off
:start
cls
set /p nth=请输入每天使用电脑的次数[1-5]:
if %nth% equ 0 cls&echo 没有限制,随意使用。&ping /n 3 127.1>nul&exit
if %nth% gtr 5 cls&echo 次数太多,返回重试!&ping /n 3 127.1>nul&goto start
:input
for /l %%i in (1,1,%nth%) do set /p nth%%i=请输入第 %%i 次使用时间段[xx:xx:xx-xx:xx:xx]:
call :length %%i
:length
Setlocal EnableDelayedExpansion
set nth
for /l %%i in (1,1,!nth!) do for /l %%j in (1,1,20) do if "!nth%1:~%%j,1!"=="" if %%j neq 17 cls&echo 时间段设置出错,返回重试。&ping /n 3 127.1>nul&cls&goto input
pause>nul
Endlocal
|
|
2008-4-18 07:43 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
『第
4 楼』:
在这里用for是不合适的,容我想想
|
|
2008-4-18 09:35 |
|
|
moniuming
银牌会员
永远的菜鸟
积分 1335
发帖 574
注册 2007-11-27 来自 广西
状态 离线
|
|
2008-4-18 09:58 |
|
|
chishingchan
银牌会员
积分 1282
发帖 538
注册 2002-11-2
状态 离线
|
|
2008-4-18 14:18 |
|