Windowsbatch file时间比较

我正在尝试比较当前系统时间和设定时间。 请看下面:

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 。 这会导致比较问题,因为批处理正在进行字符串比较而不是数字比较。

由于6的ASCII值大于0的ASCII值,因此07:00小于6:00

解决方案要求如果在上午10点之前,则在时间的开始附加零。

只是改变

 set currentTime=%TIME% 

 set "currentTime=%Time: =0%" 

这将用零替换任何空格。