2016-01-21 24 views
0

嗨,我正在寫一個批處理文件。如果這個log.txt文件包含「返回代碼:8」或「返回代碼:12」或「返回代碼:16」,我的目的是運行commond,並在「log.txt」中捕獲日誌文件,我必須停止執行剩下。需要幫助來檢查錯誤日誌,並決定繼續或退出

樣品批處理文件是如下(SAP運輸)

For /F "tokens=1,2" %%a in (trlist.txt) do (
    tp import %%a SYSTEMID client=%%b u01 pf=c:\trans\sap\bin\dbc.pfl 1>>c:\log.txt 2>&1 
    findstr /C:"return code: 8" c:\log.txt 
    if errorlevel 0 goto END 
    findstr /C:"return code: 12" c:\log.txt 
    if errorlevel 0 goto END 
    findstr /C:"return code: 16" c:\log.txt 
    if errorlevel 0 goto END 
) 

Echo "Processed successfully ...:">c:\result.txt 
Echo "Check the c:\log.txt file " >>c:\result.txt 
Exit 

:END 
Echo "Error occured... " > c:\result.txt 
Echo "Check the c:\log.txt file." >>c:\result.txt 
Exit. 

TP的每一次執行之後,檢查log.txt文件。如果這包含上面提到的任何返回碼,則應停止進一步執行。

儘管「返回碼:4」和「返回碼:0」不應退出,但腳本正在退出。

我在Windows 2008服務器上運行上述bat文件。

+1

'如果錯誤級別0'將它爲0或更高返回true。閱讀此頁面瞭解錯誤級別檢查。 http://www.robvanderwoude.com/errorlevel.php – RLH

回答

0

從RHL的鏈接:

IF ERRORLEVEL返回true如果返回碼等於或大於更高指定的錯誤級別

這意味着,當您檢查ERRORLEVEL 0,它將總是返回true。您需要檢查ERRORLEVEL 1,如果未找到字符串,將返回true,或者檢查NOT ERRORLEVEL 1,如果找到您的字符串,將返回true。

像這樣:

... 
findstr /C:"return code: 8" c:\log.txt 
    if not errorlevel 1 goto END 
... 
+0

親愛的全體感謝您的支持。是的,我誤解了錯誤級別的表示。 – Bheem