Batch file 使用批处理脚本在日志文件中写入要删除的文件的文件名
我的脚本下面有一节,我正在删除超过30天的文件。我能做到。但我想写的是,哪个文件被删除了Batch file 使用批处理脚本在日志文件中写入要删除的文件的文件名,batch-file,Batch File,我的脚本下面有一节,我正在删除超过30天的文件。我能做到。但我想写的是,哪个文件被删除了 @ echo off SET dump_path=d:/test/files SET _CmdResult=NONE FOR /F "tokens=*" %%a IN ('forfiles /d -30 /p %dump_path% /m *.* /c "cmd /c echo @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
@ echo off
SET dump_path=d:/test/files
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles /d -30 /p %dump_path% /m *.* /c "cmd /c echo @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." (
SET errorlevel=0
) ELSE (
SET errorlevel=1
)
IF "%_CmdResult%" == "NONE" SET errorlevel=0
捕获物是;如果没有找到超过30天的文件,我也必须处理异常。我也能做到这一点
但是我需要你的帮助,用上面的代码将要删除的文件的文件名写入日志文件
set "dump_path=d:\test\files"
set "logFile=d:\test\logFile.txt"
> "%logFile%" 2>nul (
forfiles /d -30 /p "%dump_path%" /m *.*
)
if errorlevel 1 (
echo No files found
) else (
for /f "usebackq delims=" %%a in ("%logFile%") do echo del "%dump_path%\%%~a"
)
只需保存日志文件并检查forfiles中的错误级别。如果没有errorlevel,则从日志文件中读取要删除的文件列表
在前面的代码中,删除操作只回显到控制台。如果输出正确,请删除echo命令
注意:在代码中设置errorlevel不是一个好主意。如果您为变量设置一个值,运行一个命令并尝试检索errorlevel,您将获得存储的值,而不是生成的值
如果需要清除errorlevel,只需使用ver>nul
如果需要设置错误级别,请使用exit n或exit/b n以使用指示的n errorlevel n数字离开当前流程,或者如果要继续当前流程但设置错误级别,请使用cmd/c exit n