批处理文件用于删除早于指定日期的文件。
批处理文件用于删除早于指定日期的文件。
该问题已经有了答案:
如何创建批处理文件以删除早于指定日期的文件?
这个似乎不起作用;
:: --------DELOLD.BAT---------- @echo off SET OLDERTHAN=%1 IF NOT DEFINED OLDERTHAN GOTO SYNTAX for /f "tokens=2" %%i in ('date /t') do set thedate=%%i type %1 pause set mm=%thedate:~0,2% set dd=%thedate:~3,2% set yyyy=%thedate:~6,4% set /A dd=%dd% - %OLDERTHAN% set /A mm=%mm% + 0 if /I %dd% GTR 0 goto DONE set /A mm=%mm% - 1 if /I %mm% GTR 0 goto ADJUSTDAY set /A mm=12 set /A yyyy=%yyyy% - 1 :ADJUSTDAY if %mm%==1 goto SET31 if %mm%==2 goto LEAPCHK if %mm%==3 goto SET31 if %mm%==4 goto SET30 if %mm%==5 goto SET31 if %mm%==6 goto SET30 if %mm%==7 goto SET31 if %mm%==8 goto SET31 if %mm%==9 goto SET30 if %mm%==10 goto SET31 if %mm%==11 goto SET30 if %mm%==12 goto SET31 goto ERROR :SET31 set /A dd=31 + %dd% goto DONE :SET30 set /A dd=30 + %dd% goto DONE :LEAPCHK set /A tt=%yyyy% %% 4 if not %tt%==0 goto SET28 set /A tt=%yyyy% %% 100 if not %tt%==0 goto SET29 set /A tt=%yyyy% %% 400 if %tt%==0 goto SET29 :SET28 set /A dd=28 + %dd% goto DONE :SET29 set /A dd=29 + %dd% :DONE if /i %dd% LSS 10 set dd=0%dd% if /I %mm% LSS 10 set mm=0%mm% for %%i in (*.*) do ( set FileName=%%i call :PROCESSFILE %%~ti ) set mm= set yyyy= set dd= set thedate= goto EXIT :SYNTAX ECHO. ECHO USAGE: ECHO DELOLD X ECHO Where X is the number of days previous to Today. ECHO. ECHO EX: "DELOLD 5" Deletes files older than 5 days. GOTO EXIT :PROCESSFILE set temp=%1 set fyyyy=20%temp:~6% set fmm=%temp:~0,2% set fdd=%temp:~3,2% if /I %fyyyy% GTR 2069 set fyyyy=19%temp:~6% :: *************************************** :: * This is where the files are deleted * :: * Change the ECHO command to DEL to * :: * delete. ECHO is used for test. * :: *************************************** if /I %yyyy%/%mm%/%dd% GEQ %fyyyy%/%fmm%/%fdd% ( ECHO %FileName% ) set temp= set fyyyy= set fmm= set fdd= :EXIT :: ----------END-DELOLD.BAT-------------
admin 更改状态以发布 2023年5月21日
如果你正在使用Windows Server并且安装了服务器资源工具包,forfiles可能就是你所需要的工具。
示例:
打印出所有文件名,早于180天
forfiles /S /D -180 /C "cmd /C Echo @Path" >olderthan180days.txt
删除所有PDF文件,早于365天
forfiles /S /M *.pdf /D -365 /C "cmd /C Del @Path"
我使用这段脚本:
//////////////////////////////////////////////////////// // Deletes file older than a number of days // in the current directory //////////////////////////////////////////////////////// // Usage: wscript DeleteOlderThan.js [#Days] // By default, remove files older than 30 days //////////////////////////////////////////////////////// function removeDays(date, nDays) { var dateRet = date return dateRet.setDate(date.getDate() - nDays); } function addSlash(strPath) { var c = strPath.substr(-1, 1); if( c !== '\\' && c !== '/' ) { strPath += '\\'; } return strPath; } // Read arguments var nDays = WScript.Arguments(0) || 30; // Create system objects var fs = WScript.CreateObject("Scripting.FileSystemObject"); var shell = WScript.CreateObject("WScript.Shell"); // Retrieve current directory var strDirectoryPath = addSlash(shell.CurrentDirectory); // Compute date var dateNow = new Date(); var dateTest = removeDays(dateNow, nDays); // Iterate on files var folder = fs.GetFolder(strDirectoryPath); var files = folder.Files; for( var it = new Enumerator(files); !it.atEnd(); it.moveNext() ) { var file = it.item(); if( file.DateLastModified < dateTest) { file.Delete(true); } }
我每天都通过以下方式调用它:
wscript "C:\Program Files\Utils\DeletesOlderThan.js" 30