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

在运行以下代码的时候遇到了bug 但是不知道什么原因

发现运行过程中有bug,就把例子改了一下得到的结果在下面,很明显当秒进位使分加一的时候,秒多了十秒,并且还持续到了08秒
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. rem 计算当前时间往后1000秒是什么时间(不包含日期计算)
  4. set "h=%time:~,2%"&set "m=%time:~3,2%"&set "s=%time:~6,2%"
  5. echo 当前时间%h%:%m%:%s%
  6. rem 上面依次截取时间变量的时、分、秒值并分别赋值给h、m、s变量
  7. for /l %%a in (1,1,10) do (
  8.      set /a m=1!m!%%100,s=1!s!%%100,s+=1
  9.      rem 上面将m、s变量去零转化为有效的10进制数值
  10.      if !s! equ 60 set /a s=0,m+=1
  11.      if !m! equ 60 set /a m=0,h+=1
  12.      if !h! equ 24 set /a h=0
  13.      rem 上面将每次递加后的时、分、秒值转化为相应的进制
  14. )
  15. set "m=0%m%"&set "m=!m:~-2!"
  16. set "s=0%s%"&set "s=!s:~-2!"
  17. rem 上面将分、秒值在前面补0并取后两位数(补足两位数)
  18. echo 往后10秒是%h%:%m%:%s%
  19. pause>nul
  20. goto start
复制代码
当前时间14:38:59
往后10秒是14:39:19
当前时间14:39:02
往后10秒是14:39:22
当前时间14:39:07
往后10秒是14:39:27
当前时间14:39:08
往后10秒是14:39:28
当前时间14:39:09
往后10秒是14:39:19
only the strong survive!

TOP

的确 将set /a m=1!m!%%100,s=1!s!%%100 放到循环之外问题就解决了 谢谢寒夜孤星
only the strong survive!

TOP

返回列表