批量比较日期(用于更新)

Compare dates in batch (for update)

我正在编写一个程序的启动器,我想自我更新(但是当我输入 wget.exe 时,它不存在)。所以我改成比较日期"Update",但它不起作用:

set UpdateDate=11/11/2015

if %date% GEQ %UpdateDate% goto NOTUPDATED

if %date% LSS %UpdateDate% goto UPDATED

然后,我测试了一下,一切正常。但我也想尝试 NOTUPDATED。我将 UpdateDate 更改为 11/02/2015(我写的时间是 11/04/2015)并且它已更新...我也尝试过其他日期,例如 02/03/2015,它也已更新。

此外,我已经阅读了不起作用的解决方案...

谢谢!

一般来说,GEQLSS等比较运算符在IF命令中比较numbersstrings。自己比较下一个日期 strings:

10/04/2016  // the least string although the biggest date 
11/04/2015  
12/04/2014  // the biggest string although the least date

所以你应该用可比较的格式表达日期,例如ISO 8601日期YYYY-MM-DD(年-月-日)或类似的YYYYMMDD.假设(在您的语言环境中)11/04/2015 日期字符串表示 2015 年 4 月 11 日:

set "thisDate=11/04/2015"
rem "thisDate=%DATE%"
set "AnsiDate=%thisDate:~6,4%-%thisDate:~3,2%-%thisDate:~0,2%"
echo thisDate=%thisDate% AnsiDate=%AnsiDate%

应该显示thisDate=11/04/2015 AnsiDate=2015-04-11

资源(必读):