我正在尝试将当前系统时间与设定时间进行比较。请看下面:
set currentTime=%TIME%
set flag=false
if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true
if %flag%==true (
) else (
)
如果时间在早上 7 点到晚上 10:45 之间,则执行此操作,否则执行其他操作。
问题是这行不通。结果不断变化。我认为这与我与 07:00 的比较有关
最佳答案
您的脚本失败的原因是上午 10 点之前的时间。当时间小于 10 时,%Time% 变量返回此格式:"H:MM:SS:ss"
。然而,当 10 或更高时 %Time%
变量返回此格式:"HH:MM:SS:ss"
。
请注意在 10
缺失之前的时间开始处缺失的 0
。这会导致比较问题,因为批处理进行的是字符串比较而不是数字比较。
07:00
小于 6:00
因为 6
的 ASCII 值大于0
。
如果时间在上午 10 点之前,该解决方案要求您在时间的开头附加一个零。
只是改变
set currentTime=%TIME%
进入
set "currentTime=%Time: =0%"
这会将时间中的所有空格替换为零。
关于Windows 批处理文件时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282788/