Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本错误级别帮助_Batch File_If Statement_Error Handling_Batch Processing_Return Code - Fatal编程技术网

Batch file 批处理脚本错误级别帮助

Batch file 批处理脚本错误级别帮助,batch-file,if-statement,error-handling,batch-processing,return-code,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)传输已清除的文件 我需要的是一种方法来分别检查这些操作的错误级别。如果

在批处理脚本中有两个操作。第一个操作调用.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)传输已清除的文件

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


如果errorlevel不是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循环结束时失败退出,如果希望在可能失败的scriber命令处退出,可以执行以下操作-

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命令失败>>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 failed at c:\%%H>>log.txt&goto :EOF