我在批处理脚本中发生了两个操作。第一个操作需要一个.exe文件,该文件使用.xml文件来清理文件中的内容。

FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H

第二个 Action 是通过psftp(putty ftp)传输清理后的文件。
echo n | psftp.exe [email protected] -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt

我需要的是一种单独检查每个操作的错误级别的方法。如果错误级别为0,则我需要继续执行该过程,并将成功消息回显到我选择的文件中。

如果错误级别不是0,那么我需要立即结束并退出脚本的过程,并将失败的消息回显到我选择的文件中。

最佳答案

错误级别在变量%errorlevel%中设置-您可以使用简单的if语句。

if errorlevel 1 echo command failed>>log.txt&goto :EOF

或者-
if %errorlevel%==1 echo command failed>>log.txt&goto :EOF

或者您可以在命令末尾使用||,只有在前面的命令设置了错误级别的情况下,才会执行||之后的任何代码。
FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do (
    c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H
) || echo command failed>>log.txt&goto :EOF

上面的代码将在整个for循环结束时退出失败,如果要退出可能失败的scrubber命令,可以执行以下操作-
FOR /F "tokens=1 delims=/" %%H in ('DIR /B c:\directory\*') do c:\Progra~1\scrub-prog\scrubber.exe c:\Progra~1\scrub-prog\scrubber.xml c:\%%H || echo failed at c:\%%H>>log.txt&goto :EOF

07-28 07:38