如何将批处理清理的过期文件名记录到日志文件中?
批处理清理旧文件并记录被清理文件名
你可以通过修改forfiles的执行命令,在删除文件的同时将文件名写入日志,同时确保日志目录存在。以下是修改后的完整代码:
setlocal EnableDelayedExpansion set logpath=C:\Temp\Archive if not exist %logpath% md %logpath% set FILEAGE=60 set archlog=%logpath%\Accurate_ARCHIVE.txt set inputdir=C:\Temp REM Set the date FOR /f "tokens=2,3,4 delims=/ " %%a in ('date/t') do (set DD=%%a) & (set MM=%%b) & (set YYYY=%%c) REM * Purge files older than %FILEAGE% days from disk and log deleted files. forfiles /p "%inputdir%" /s /m *.* /d -%FILEAGE% /c "cmd /c echo @path >> %archlog% && del @path" ECHO ============================================== >> %archlog% ECHO Folder %inputdir% was processed on %DD%-%MM%-%YYYY% >> %archlog% ECHO Files older than %FILEAGE% days have been purged. >> %archlog% ECHO ============================================== >> %archlog% ECHO. >> %archlog% exit %errorlevel%
关键改动说明:
- 取消了
md %logpath%的注释,确保日志目录不存在时自动创建,避免日志写入失败 - 修改
forfiles的/c参数为"cmd /c echo @path >> %archlog% && del @path",先将当前文件的完整路径写入日志,再执行删除操作 - 添加分隔线和空行,让日志内容层级更清晰、易读
修改后,Accurate_ARCHIVE.txt会先逐一记录所有被删除文件的完整路径,再标注处理时间和清理说明。
内容的提问来源于stack exchange,提问作者Kunal Chadha
相关产品推荐
相关产品推荐

