我在批处理脚本中发生了两个动作。第一个操作调用.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,我需要进程立即结束并退出脚本,并显示无法回显到我选择的文件中的消息。
答案 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