0

我在批處理腳本中發生了兩個操作。第一個操作需要使用.xml文件清理文件中的內容的.exe文件。批處理腳本錯誤級別幫助

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 [email protected] -i id_rsa.ppk -v -b psftp-rules.txt -bc >> c:\log-file.txt 

我需要的是一種方法來檢查每個這些行爲的錯誤級別分開。如果錯誤級別爲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循環結束失敗退出,你可以做到以下幾點,如果你想在洗滌器命令可能無法退出 -

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 
+0

'如果不是%ERRORLEVEL %== 0迴應命令失敗>> log.txt&goto:EOF' < - 這是更好的,將捕獲任何非零的錯誤級別。 – foxidrive