@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
CALL :SECS "%DATE:~0,10% %TIME:~0,8%"
SET /A SN=%SECS%
CLS
ECHO 基准时间:%DATE:~0,10% %TIME:~0,5%。
FOR /F "DELIMS=" %%Y IN ('DIR "%~DP0" /S /B /A:-D') DO (
CALL :SECS "%%~TY:00"
SET /A ZM=%SN%-!SECS!
IF !ZM! GTR 2592000 (ECHO 修改时间:%%~TY 超过30天啦!^<----------“%%Y”
REM DEL "%%Y" /F /Q >NUL
)
REM 30(天)*24(时/天)*60(分/时)*60(秒/分)=2592000(秒)
)
FOR /F "TOKENS=*" %%I IN ('DIR /S /B /AD^|SORT /R') DO RD "%%I" >NUL 2>NUL
PAUSE&EXIT
:SECS
REM 计算从1970年初至指定日期时间所经过的秒数(SECS): CALL:SECS "YYYY/NN/DD HH:MM:SS"
FOR /F "TOKENS=1-6 DELIMS=:,/, " %%A IN ('ECHO %~1') DO (
SET /A YP=0
SET /A TM=%%A-1 2>NUL
IF !TM! GTR 0 (FOR /L %%I IN (1970,1,!TM!) DO (
CALL :RY %%I
IF "!RRR!"=="Y" SET /A YP+=1
))
SET /A DAYS=%%A*365-1970*365+!YP! 2>NUL
REM 此刻的!DAYS!为“从1970年初至指定年份的前一年末,经历的总天数。”
IF %%B GTR 1 (SET /A TM=%%B-1 2>NUL
SET /A DAYS=!DAYS!+!TM!*30
FOR /L %%I IN (1,1,!TM!) DO (FOR %%K IN (1 3 5 7 8 10) DO (IF %%I EQU %%K SET /A DAYS+=1))
)
IF %%B GTR 2 (CALL :RY %%A&IF "!RRR!"=="Y" (SET /A DAYS-=1) ELSE (SET /A DAYS-=2))
REM 此刻的!DAYS!为“从1970年初到指定月份的前一月末 ,经历的总天数。”
SET /A DAYS=!DAYS!+%%C-1
REM 此刻的!DAYS!为“从1970年初到指定日期的前一日末 ,经历的完整总天数。”
SET /A SECS=!DAYS!*24*60*60+%%D*60*60+%%E*60+%%F 2>NUL
)
GOTO :EOF
:RY
REM 判断闰年的条件:四年一闰,百年不闰,四百年再闰:“1、能被4整除,但不能被100整除; 2、能被400整除”
SET RRR=N
SET /A N1=%1%%4
SET /A N2=%1%%100
SET /A N3=%1%%400
IF %N3% EQU 0 (SET RRR=Y)
IF %N1% EQU 0 (IF %N2% NEQ 0 (SET RRR=Y))
GOTO :EOF