
批處理如何刪除某目錄下的固定文件夾中指定日期的規則文件[結帖]最后由 lky216 于 -4-30 15:50公司的一些計算機,有一個D:user,是客戶的文件夾集合,里面都是客戶設置的英文名稱的子文件夾,各個客戶(例:A;B;AAC)的目錄下又有兩個文件夾,1:log,2:doc現在由于log日志占用了很大的空間,想刪除指定日期前的log文件,由于doc文件夾可能過多的文件,現在想直接在D:user中,直接搜索log文件夾下的指定日期之前的ex*.log日志文件刪除,保留這個日期之后的日志文件。而不搜索doc,從而提高運行效率。或者是直接搜索,D:user*log這個意思的,doc文件夾實在大我是新手,只操作了搜索D:user整個目錄的,有800個客戶,運行了8分鐘才操作了一部分。我在C盤測試,用了一秒就刪除了測試用的ex*.log文件,可見D:user有太多東西了。我用論壇里的代碼:
- @echo off
- ::演示:刪除指定路徑下指定天數之前(以文件的最后修改日期為準)的文件。
- ::如果演示結果無誤,把del前面的echo去掉,即可實現真正刪除。
- ::本例調用了臨時VBS代碼進行日期計算,并統一設置系統日期格式,處理完畢
- ::之后再把日期格式恢復成原來的狀態。擺脫了對reg命令(XP系統自帶)的依賴。
- rem 指定待刪除文件的存放路徑
- set SrcDir=C:TestBatHome
- rem 指定天數
- set DaysAgo=1
- >%temp%BackupDate.vbs echo Set WshShell = Wscript.CreateObject(Wscript.Shell)
- >>%temp%BackupDate.vbs echo Wscript.Echo WshShell.RegRead (HKEY_CURRENT_USERControl PanelInternationalsShortDate)
- for /f %%a in ('cscript /nologo %temp%BackupDate.vbs') do (
- set RegDateOld=%%a
- )
- >%temp%UnifyDate.vbs echo Set WshShell = Wscript.CreateObject(Wscript.Shell)
- >>%temp%UnifyDate.vbs echo WshShell.RegWrite HKEY_CURRENT_USERControl PanelInternationalsShortDate, yyyy-M-d, REG_SZ
- cscript /nologo %temp%UnifyDate.vbs
- >%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%
- for /r %SrcDir% %%a in (*.*) do (
- if %%~ta leq %DstDate% (
- if exist %%a (
- echo del /f /q %%a
- )
- )
- )
- >%temp%RecoverDate.vbs echo Set WshShell = Wscript.CreateObject(Wscript.Shell)
- >>%temp%RecoverDate.vbs echo WshShell.RegWrite HKEY_CURRENT_USERControl PanelInternationalsShortDate, %RegDateOld%, REG_SZ
- cscript /nologo %temp%RecoverDate.vbs
- pause
nclick="copycode($('code0'));">復制代碼
27樓結帖子