批处理脚本错误级别帮助



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

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

第二个操作是通过 psftp (腻子 ftp) 传输清理后的文件。

echo n | psftp.exe user@hostname.com -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~1scrub-progscrubber.exe c:Progra~1scrub-progscrubber.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~1scrub-progscrubber.exe c:Progra~1scrub-progscrubber.xml c:%%H || echo failed at c:%%H>>log.txt&goto :EOF

最新更新