Windows批处理文件时间比较

Bri*_*ian 7 windows cmd batch-file

我试图将当前系统时间与设定时间进行比较.请看下面:

 set currentTime=%TIME%
 set flag=false

 if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true

 if %flag%==true (


 ) else (

 )
Run Code Online (Sandbox Code Playgroud)

如果时间是早上7点到晚上10:45之间,则执行此操作,否则执行另一个操作.

问题是这不起作用.结果不断变化.我认为这与我的比较有关,即07:00

Dav*_*ann 10

您的脚本失败的原因是在上午10点之前的时间.当时间小于10时,%Time%变量返回以下格式:" H:MM:SS:ss".但是当10或更晚的%Time%变量返回这种格式时:"HH:MM:SS:ss".

注意缺少0之前的时间10的缺失.这会导致比较问题,因为批处理正在进行字符串比较而不是数字比较.

07:00不足是6:00因为ASCII值6大于ASCII值0.

该解决方案要求在时间开始时将零附加到上午10点之前.

只是改变

set currentTime=%TIME%
Run Code Online (Sandbox Code Playgroud)

set "currentTime=%Time: =0%"
Run Code Online (Sandbox Code Playgroud)

这将用零替换时间中的任何空格.