批量比较日期(用于更新)
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,它也已更新。
此外,我已经阅读了不起作用的解决方案...
谢谢!
一般来说,GEQ
、LSS
等比较运算符在IF
命令中比较numbers或strings。自己比较下一个日期 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
资源(必读):
我正在编写一个程序的启动器,我想自我更新(但是当我输入 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,它也已更新。
此外,我已经阅读了不起作用的解决方案...
谢谢!
一般来说,GEQ
、LSS
等比较运算符在IF
命令中比较numbers或strings。自己比较下一个日期 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
资源(必读):