如何在forfiles中获取一个命令的错误等级(ERRORLEVEL)?

3

我需要处理一天前的文件。因此,我使用以下代码:

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

现在我想要检查 7z.exe 的进程是否成功。我该如何在 forefiles 命令中获取命令的 errorlevel?是否有可能实现?
我已经尝试过以下方法,但它们都没有成功。即使我使用应返回错误(2)的损坏文件,errorlevel 也始终返回0。
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

2
不要使用“start”,直接像“cmd /c 7z.exe .............”一样执行“7z”。 - wOxxOm
1
使用 || 立即在调用 7z.exe 之后,以捕获无法成功的情况。 - Mathias R. Jessen
1
7z.exe t %%f应该放在一起,否则无法正常工作。 - mediii
1个回答

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接