1.取得前一天的时间:
@ECHO OFF
SET YEAR=%1%
SET MONTH=%2%
SET DAY=%3%
rem SET YEAR=%date:~0,4%
rem SET MONTH=%date:~5,2%
rem SET DAY=%date:~8,2%
rem :后面这段是去掉空格的
:intercept
if "%YEAR:~-1%"==" " set "YEAR=%YEAR:~0,-1%"&goto intercept
:MONTHintercept
if "%MONTH:~-1%"==" " set "MONTH=%MONTH:~0,-1%"&goto MONTHintercept
:DAYintercept
if "%DAY:~-1%"==" " set "DAY=%DAY:~0,-1%"&goto DAYintercept
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%*
2.连接调用三次,取得前三天的时间,并删除记录
@ECHO OFF
SET YEAR=%date:~0,4%
SET MONTH=%date:~5,2%
SET DAY=%date:~8,2%
call getLastDay.bat %YEAR% %MONTH% %DAY%
SET /p YEAR=<"YEAR.tmp"
SET /p MONTH=<"MONTH.tmp"
SET /p DAY=<"DAY.tmp"
call getLastDay.bat %YEAR% %MONTH% %DAY%
SET /p YEAR=<"%temp%YEAR.tmp"
SET /p MONTH=<"%temp%MONTH.tmp"
SET /p DAY=<"%temp%DAY.tmp"
call getLastDay.bat %YEAR% %MONTH% %DAY%
rem echo %YEAR%%MONTH%%DAY%
rem del /F /S c:aaaadddd%YEAR%%MONTH%%DAY%*.log
搞完这个后,有两个感觉到
1.bat 调用,不能返回参数,需要使用临时文件实现.
2.功能上还是没有unix下的强.
@ECHO OFF
SET YEAR=%1%
SET MONTH=%2%
SET DAY=%3%
rem SET YEAR=%date:~0,4%
rem SET MONTH=%date:~5,2%
rem SET DAY=%date:~8,2%
rem :后面这段是去掉空格的
:intercept
if "%YEAR:~-1%"==" " set "YEAR=%YEAR:~0,-1%"&goto intercept
:MONTHintercept
if "%MONTH:~-1%"==" " set "MONTH=%MONTH:~0,-1%"&goto MONTHintercept
:DAYintercept
if "%DAY:~-1%"==" " set "DAY=%DAY:~0,-1%"&goto DAYintercept
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%*
2.连接调用三次,取得前三天的时间,并删除记录
@ECHO OFF
SET YEAR=%date:~0,4%
SET MONTH=%date:~5,2%
SET DAY=%date:~8,2%
call getLastDay.bat %YEAR% %MONTH% %DAY%
SET /p YEAR=<"YEAR.tmp"
SET /p MONTH=<"MONTH.tmp"
SET /p DAY=<"DAY.tmp"
call getLastDay.bat %YEAR% %MONTH% %DAY%
SET /p YEAR=<"%temp%YEAR.tmp"
SET /p MONTH=<"%temp%MONTH.tmp"
SET /p DAY=<"%temp%DAY.tmp"
call getLastDay.bat %YEAR% %MONTH% %DAY%
rem echo %YEAR%%MONTH%%DAY%
rem del /F /S c:aaaadddd%YEAR%%MONTH%%DAY%*.log
搞完这个后,有两个感觉到
1.bat 调用,不能返回参数,需要使用临时文件实现.
2.功能上还是没有unix下的强.