我有一个简单的批处理脚本可以在特定日期执行某些操作,但我希望它能够在日期之间执行此操作,或者始终在特定日期之前或之后执行此操作。
@ECHO OFF
IF "%DATE%"=="12/12/2011" GOTO ARMREST
GOTO END
:ARMREST
ECHO HELLO WORLD!
PAUSE
:END
现在我尝试使用“> =”但它没有用,我已经全部结束但似乎无法找到我正在寻找的东西。我甚至不知道是否可以使用那种复杂的布尔值?这适用于Windows 7,非常简单的脚本,只是想知道日期。
另外,我有一台西班牙机器,其日期值与英国不同 - 所以英国的是“12/02/2011”(DD / MM / YYYY),而西班牙的机器是12/2/2011 (dd / m / yyyy)我想,但是我可以找到一个简单的@ECHO%DATE%不能吗?!
谢谢!
答案 0 :(得分:1)
%DATE%使用短日期格式返回当前日期,即完全(无限制)自定义。一个用户可以将其系统配置为返回Fri040811,另一个用户可以选择08/04/2011 ...这对于BAT程序员来说是一个完整的噩梦。
可能的解决方案是使用WMIC。 WMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table
以方便的方式返回日期,以便用FOR。
@ECHO OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
SET /A DAYS=%%F*10000+%%D*100+%%A
)
IF %DAYS% GTR 20111210 (
IF %DAYS% LSS 20111230 (
ECHO Yes!
)
)
GOTO :eof
答案 1 :(得分:0)
您必须使用格式yyyymmdd标准化所有日期以进行比较。例如:
rem Convert from dd/m/yyyy to yyyymmdd
set date=%date:/=/0%
set year=%date:~-4,4%
set month=%date:~-8,2%
set day=%date:~0,2%
set normdate=%year%%month%%day%
检查变量substring的实例http://ss64.com/nt/syntax.html并替换。
使用lss,leq,gtr和geq进行比较。