标题: [文本处理] [已解决]判断时间的批处理为什么会输出8秒9秒? [打印本页]
作者: lifei666 时间: 2021-4-18 19:35 标题: [已解决]判断时间的批处理为什么会输出8秒9秒?
本帖最后由 lifei666 于 2021-4-24 21:13 编辑
- :chonglai
- timeout 1 /NOBREAK
- for /f "tokens=1,2,3 delims=:." %%i in ("%time%") do (
- set "tvar=%%i点%%j分%%k秒"
- if %%~k GTR 4 goto chonglai
- )
- echo %time%>>12.txt
- goto chonglai
复制代码
作者: xp3000 时间: 2021-4-18 20:09
- @echo off
- title %date:~0,4%.%date:~5,2%.%date:~8,2%-%time:~0,2%点%time:~3,2%分%time:~6,2%秒
- :1
- ping -n 1 127.1 >nul
- %0
- goto :1
- pause
复制代码
作者: lifei666 时间: 2021-4-18 20:21
我的意思是只有前4秒 执行后面的Echo 可以是8秒和9秒也执行了 不知道什么原因
作者: xp3000 时间: 2021-4-18 20:27
这种框显示如果添加命令好像衔接不上,有命令也没用,pause也多余
作者: xp3000 时间: 2021-4-18 20:27
这种框显示如果添加命令好像衔接不上,有命令也没用,pause也多余
作者: lifei666 时间: 2021-4-18 20:29
什么就框显示了?你说的什么?
作者: lifei666 时间: 2021-4-18 21:01 标题: 只在每分钟前4秒执行后面的,为什么8秒和9秒也运行了~
- :chonglai
- timeout 1 /NOBREAK
- for /f "tokens=1,2,3 delims=:." %%i in ("%time%") do (
- if %%~k GTR 4 goto chonglai
- )
- echo %time%>>12.txt
- goto chonglai
复制代码
作者: WHY 时间: 2021-4-18 21:21
复制代码
if条件为真,06会转换为数字6,其结果是数字6与数字4比较。复制代码
if条件为假,09不能转成数字9(09会被当作非法的8进制),其结果是字符串09与字符串4比较。
正确姿势是加双引号进行字符串比较:- if "%%k" GTR "04" goto :a
复制代码
作者: smss 时间: 2021-4-19 00:50
- LSS是小于if %%k LSS 4
- 你也可if 4 GTR %%k goto chonglai
复制代码
作者: lifei666 时间: 2021-4-19 14:54
if "%%k" GTR "04" goto :a
问题解决了
还是不明白为啥。if条件为假,09不能转成数字9
作者: Batcher 时间: 2021-4-19 15:52
回复 10# lifei666
截取日期、时间之后进行 set /a 计算时08和09会被看做非法八进制数字,参考:
http://bbs.bathome.net/thread-29062-1-1.html
http://bbs.bathome.net/thread-29253-1-1.html
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |