[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]判断时间的批处理为什么会输出8秒9秒?

本帖最后由 lifei666 于 2021-4-24 21:13 编辑
  1. :chonglai
  2. timeout 1 /NOBREAK
  3. for /f "tokens=1,2,3 delims=:." %%i in ("%time%") do (
  4.   set "tvar=%%i点%%j分%%k秒"
  5.   if %%~k GTR 4 goto chonglai
  6. )
  7. echo %time%>>12.txt
  8. goto chonglai
复制代码

  1. @echo off
  2. title %date:~0,4%.%date:~5,2%.%date:~8,2%-%time:~0,2%点%time:~3,2%分%time:~6,2%秒
  3. :1
  4. ping -n 1 127.1 >nul
  5. %0
  6. goto :1
  7. pause
复制代码

TOP

我的意思是只有前4秒 执行后面的Echo  可以是8秒和9秒也执行了  不知道什么原因

TOP

这种框显示如果添加命令好像衔接不上,有命令也没用,pause也多余

TOP

这种框显示如果添加命令好像衔接不上,有命令也没用,pause也多余

TOP

什么就框显示了?你说的什么?

TOP

只在每分钟前4秒执行后面的,为什么8秒和9秒也运行了~

  1. :chonglai
  2. timeout 1 /NOBREAK
  3. for /f "tokens=1,2,3 delims=:." %%i in ("%time%") do (
  4.    if %%~k GTR 4 goto chonglai
  5. )
  6. echo %time%>>12.txt
  7. goto chonglai
复制代码

TOP

  1. if 06 GTR 4 goto :a
复制代码
if条件为真,06会转换为数字6,其结果是数字6与数字4比较。
  1. if 09 GTR 4 goto :a
复制代码
if条件为假,09不能转成数字9(09会被当作非法的8进制),其结果是字符串09与字符串4比较。

正确姿势是加双引号进行字符串比较:
  1. if "%%k" GTR "04" goto :a
复制代码
2

评分人数

TOP

  1. LSS是小于if %%k LSS 4
  2. 你也可if 4 GTR %%k goto chonglai
复制代码

TOP

if "%%k" GTR "04" goto :a
问题解决了
还是不明白为啥。if条件为假,09不能转成数字9

TOP

回复 10# lifei666


截取日期、时间之后进行 set /a 计算时08和09会被看做非法八进制数字,参考:
http://bbs.bathome.net/thread-29062-1-1.html
http://bbs.bathome.net/thread-29253-1-1.html
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表