【问题标题】:How to get ERRORLEVEL of a command in forfiles?如何在forfiles中获取命令的ERRORLEVEL?
【发布时间】:2015-11-20 13:56:29
【问题描述】:

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

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

【问题讨论】:

  • 完全不要使用start,直接像cmd /c 7z.exe .............一样执行7z
  • 在调用7z.exe 后立即使用|| 来捕获未成功的实例
  • 7z.exe t %%f 属于一起,所以这不起作用

标签: batch-file errorlevel forfiles


【解决方案1】:

假设7z.exe 确实提供ErrorLevel,我认为条件命令分隔符查询ErrorLevelcmd 而不是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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多