如何在forfiles中获取命令的错误级别?

时间:2015-11-20 13:56:29

标签: windows batch-file errorlevel

我需要处理超过一天的文件。因此我用这个:

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f" /d +1

现在我想检查7z.exe的进度是否成功。如何在forefiles命令中获取命令的 errorlevel ?有可能吗?

我已经尝试过以下不起作用的方法。 Errorlevel 总是返回0,即使我使用了损坏的文件,也应该返回错误(2)。

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f && echo ok || echo delete %%f" /d +1

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f && if errorlevel 2 (DEL %%f)" /d +1

1 个答案:

答案 0 :(得分:1)

假设7z.exe确实传递了ErrorLevel,我认为条件命令分隔符查询ErrorLevel cmd而不是7z.exe。以下应该有效:

forfiles /M "%%~nxf" /C "cmd /C 0x22start /WAIT /MIN 7z.exe t 0x22%%~f0x22 && echo ok || echo delete 0x22%%~f0x220x22" /D +1

或者你也可以在没有start的情况下这样做:

forfiles /M "%%~nxf" /C "cmd /C 0x227z.exe t 0x22%%~f0x22 && echo ok || echo delete 0x22%%~f0x220x22" /D +1

您可能已经注意到,我还修复了给定路径的一些引用问题。