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