Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理脚本在日志文件中写入要删除的文件的文件名_Batch File - Fatal编程技术网

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

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

我的脚本下面有一节,我正在删除超过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天的文件,我也必须处理异常。我也能做到这一点

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

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