使用批处理脚本在日志文件中写入要删除的文件的文件名

时间:2015-01-29 10:39:30

标签: 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 


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天的文件,我也必须处理异常。我也能做到这一点。

但我需要你的帮助,用上面的代码将要删除的文件的文件名写入日志文件。

1 个答案:

答案 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 nexit /b n将当前流程保留为指示的n错误级别(n数字),或者如果您需要要继续当前流程但设置错误级别,请使用cmd /c exit n