一、刪除文件的:
@echo off
::演示:刪除指定路徑下指定天數之前(以文件名中包含的日期字符串爲準)的文件。
::如果演示結果無誤,把del前面的echo去掉,即可實現真正刪除。
::本例假設文件名中包含的日期字符串(比如:bak-2009-12-25.log)
rem 指定待刪除文件的存放路徑
set SrcDir=H:/test
rem 指定天數
set DaysAgo=2
>"%temp%/DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%/DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%/DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%/DstDate.vbs"') do (
set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
setlocal enabledelayedexpansion
for /r "%SrcDir%" %%a in (*.*) do (
set "FileDate=%%~na"
set "FileDate=!FileDate:~4,10!"
if "!FileDate!" leq "%DstDate%" (
if exist "%%a" (
echo del "%%a"
)
)
)
endlocal
pause
二、刪除目錄及目錄下的文件的:
@echo off
::演示:刪除指定路徑下指定天數之前(以文件夾名中包含的日期字符串爲準)的文件夾。
::如果演示結果無誤,把rd前面的echo去掉,即可實現真正刪除。
::本例假設文件夾名中包含的日期字符串(比如:Archive-2009-12-25)
rem 指定待刪除文件夾的存放路徑
set SrcDir=H:/test
rem 指定天數
set DaysAgo=20
>"%temp%/DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%/DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%/DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%/DstDate.vbs"') do (
set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
setlocal enabledelayedexpansion
for /d %%a in ("%SrcDir%/*.*") do (
set "FolderDate=%%~na"
set "FolderDate=!FolderDate:~0,10!"
if "!FolderDate!" leq "%DstDate%" (
if exist "%%a/" (
echo rd /s /q "%%a"
)
)
)
endlocal
pause
以上是根據007的整理而來,007保留原權利!