windows機器中刪除指定日期文件和目錄的bat

一、刪除文件的:

@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保留原權利!

發佈了52 篇原創文章 · 獲贊 6 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章