中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决] 关于计算字符串长度的批处理除BUG
作者:
标题: [已解决] 关于计算字符串长度的批处理除BUG 上一主题 | 下一主题
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
来自 广西
状态 离线
『第 5 楼』:  


@echo off
Setlocal enabledelayedexpansion
: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
if %nth%==0 goto :ok
set /a nth-=1
set /a times+=1
set /p time_=请输入第%times%次使用的时间段[xx:xx:xx-xx:xx:xx]:
for /l %%a in (1 1 20) do (
  if "!time_:~%%a,1!"=="" set aa=%%a&&if !aa! equ 17 (
    echo.&echo 这里是要执行的命令&ping -n 3 127.1>nul&goto :input
      ) else (
    set /a nth+=1&set /a times-=1&echo.&echo 时间段设置出错,返回重试。&ping -n 3 127.1>nul&goto :input
              )
)

:ok
echo.&echo 设置完毕。&ping -n 3 127.1>nul&goto :eof


   此帖被 +8 点积分        点击查看详情   
评分人:【 chishingchan 分数: +8  时间:2008-4-18 14:18


2008-4-18 09:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 6 楼』:  

谢谢!

2008-4-18 14:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: