【问题标题】:Batch script errorlevel assistance批处理脚本错误级别帮助
【发布时间】:2023-03-16 17:01:01
【问题描述】:

我在批处理脚本中发生了两个动作。第一个操作需要一个 .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

第二个动作是通过 psftp (putty ftp) 传输清理过的文件。

echo n | psftp.exe user@hostname.com -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt

我需要一种方法来分别检查每个操作的错误级别。如果错误级别为 0,我需要继续处理并将成功消息回显到我选择的文件中。

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

【问题讨论】:

    标签: batch-file if-statement error-handling batch-processing return-code


    【解决方案1】:

    错误级别在变量%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
    

    【讨论】:

    • if not %errorlevel%==0 echo command failed>>log.txt&goto :EOF
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多