2013-04-05 71 views
0

我有一個批處理文件名xyz.bat這些內容如何檢查調用命令的DOS批處理文件中的狀態

@echo off 
echo 1.Cleaning all four project. 
call apacheant\bin\ant -buildfile clean-all.xml 

當第一次通話結束它在控制檯上建立寫成功或失敗的構建。
我如何驗證此通話失敗或通過此條件的基礎上,我想決定下一次通話執行。

echo 1.Building all four project. 
call apacheant\bin\ant -buildfile build-all.xml 
@echo on 

回答

2
echo 1.Building all four project. 
call apacheant\bin\ant -buildfile build-all.xml >logfile.txt 
findstr "succeed" logfile.txt >nul 
if errorlevel 1 (echo Build failed) else (echo Build Succeeded) 

自然地,echo ...可以由「設置antstatus = SUCCEED`如果需要更換。

不要嘗試使用ERRORLEVEL來控制處理,因爲MANY命令將更改ERRORLEVEL來報告自己的狀態。

它也可能是可能ANT返回終止狀態。您可以用

echo %errorlevel% 

之後的ant一步。如果它返回一個錯誤級別,那麼你不需要創建和解釋日誌文件。

IF ERRORLEVEL語法

if errorlevel n Command_if_errorlevel_is_n_OR_GREATER_THAN_n 
+0

感謝,但現在在做其他任務,如果它工作1小時後會嘗試,這將是標記爲答案:) – AsadYarKhan 2013-04-05 07:39:34

+0

這個工作對我來說,如果%ERRORLEVEL%GTR 0 GOTO錯誤 – AsadYarKhan 2013-04-08 12:14:56

+1

當然 - 有效,但恕我直言,最好使用其他構造。 '%ERRORLEVEL%'是一個'魔術變量'。它不會出現在'set'列表中,但是如果它被使用,那麼首先搜索環境中的一個值,然後** THEN ** CMD獲得系統值在環境中找不到變量。使用'if errorlevel n'構造**總是從系統加載**並且在一個塊內(在'IF'或'FOR'的括號之間)工作,所以最好習慣性地使用'if errorlevel'你完全避免了潛在的陷阱。因人而異。 – Magoo 2013-04-08 15:25:04