如何在DOS下取得前一天的日期?
---------------------------------------------------------------
因为要用到CMD的/V选项,所以先要写一个批处理LOADER.BAT,内容如下:
@ECHO OFF
CMD /V:ON /K %1 %2 %3 %4 %5 %6 %7 %8 %9
然后写取得前一天日期的批处理PREVDAY.BAT,内容如下:
@ECHO OFF
SET YEAR=%1%
SET MONTH=%2%
SET DAY=%3%
SET /A R4=%YEAR% %% 4
SET /A R100=%YEAR% %% 100
SET /A R400=%YEAR% %% 400
SET /A DAY=%DAY%-1
IF /I !DAY! EQU 0 (
IF /I %MONTH% EQU 12 SET DAY=30
IF /I %MONTH% EQU 11 SET DAY=31
IF /I %MONTH% EQU 10 SET DAY=30
IF /I %MONTH% EQU 9 SET DAY=31
IF /I %MONTH% EQU 8 SET DAY=31
IF /I %MONTH% EQU 7 SET DAY=30
IF /I %MONTH% EQU 6 SET DAY=31
IF /I %MONTH% EQU 5 SET DAY=30
IF /I %MONTH% EQU 4 SET DAY=31
IF /I %MONTH% EQU 3 (
SET DAY=28
IF /I %R100% EQU 0 (
IF /I %R400% EQU 0 (
SET BLY=1
)ELSE (
SET BLY=0
)
)ELSE (
IF /I %R4% EQU 0 (
SET BLY=1
)ELSE (
SET BLY=0
)
)
IF /I !BLY! EQU 1 SET DAY=29
)
IF /I %MONTH% EQU 2 SET DAY=31
IF /I %MONTH% EQU 1 SET DAY=31
SET /A MONTH=%MONTH%-1
IF /I !MONTH! EQU 0 (
SET MONTH=12
SET /A YEAR=%YEAR%-1
IF /I !YEAR! EQU 0 SET YEAR=-1
)
)
ECHO %YEAR%-%MONTH%-%DAY%
SET BLY=
SET YEAR=
SET MONTH=
SET DAY=
SET R4=
SET R100=
SET R400=
EXIT
完成之后可以这样调用:
LOADER PREVDAY 2005 7 25
你可以分别测试
LOADER PREVDAY 2005 7 1
LOADER PREVDAY 2005 3 1
LOADER PREVDAY 2005 1 1
LOADER PREVDAY 2000 3 1
等等,看看结果的正确性。