我的脚本部分在下面,我将删除超过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
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天的文件,我也必须处理异常。我也能做到这一点。
但我需要你的帮助,用上面的代码将要删除的文件的文件名写入日志文件。
答案 0 :(得分:0)
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
命令
note :在代码中设置errorlevel
并不是一个好主意。如果为变量设置了值,请运行命令并尝试检索errorlevel
,您将获得存储的值,而不是生成的值。
如果您需要清除错误级别,请使用ver>nul
如果您需要设置错误级别,请使用exit n
或exit /b n
将当前流程保留为指示的n
错误级别(n
数字),或者如果您需要要继续当前流程但设置错误级别,请使用cmd /c exit n