批处理脚本错误级别的帮助

时间:2014-02-25 20:53:34

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

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

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

如果errorlevel不是0,我需要进程立即结束并退出脚本,并显示无法回显到我选择的文件中的消息。

1 个答案:

答案 0 :(得分:0)

errorlevel在变量%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