例如,在一個批處理文件,我輸入下面的命令:如何知道命令是否通過批處理文件成功執行?
XCOPY C:\ fileA.txt d:\風向\/Y/d
,如果沒有一個文件將絕對失敗稱爲fileA.txt。但我想知道它是否失敗,然後輸出一些消息給用戶。我怎樣才能做到這一點?
任何幫助將不勝感激,謝謝!
例如,在一個批處理文件,我輸入下面的命令:如何知道命令是否通過批處理文件成功執行?
XCOPY C:\ fileA.txt d:\風向\/Y/d
,如果沒有一個文件將絕對失敗稱爲fileA.txt。但我想知道它是否失敗,然後輸出一些消息給用戶。我怎樣才能做到這一點?
任何幫助將不勝感激,謝謝!
大多數命令/程序在成功時返回0,並返回一些其他值,稱爲錯誤級別,表示發生錯誤。
您可以通過
if not errorlevel 0 goto ERR
XCOPY errorlevels在你批量例如檢查此:
0 - 所有文件都沒有錯誤複製
1 - 沒有文件被發現複製(無效源)
2 - XCOPY通過Ctrl-C鍵封端的複製完成之前
4 - 發生初始化錯誤。
5 - 發生磁盤寫入錯誤。
[1] http://m.computing.net/answers/dos/xcopy-errorlevels/7510.html
我認爲你感興趣的是「錯誤級別」。見http://www.robvanderwoude.com/errorlevel.php。基本上,在您的批處理文件,你可以這樣
IF ERRORLEVEL 1 <do something>
IF ERRORLEVEL 2 <do something>
其中1和2是由執行的最後一個程序返回的狀態代碼的可能值檢查命令(類似Unix或Linux)的狀態代碼。您也可以執行如下操作:
echo %ERRORLEVEL%
可打印出狀態碼,但請注意,它並不總是像「正常」環境變量那樣工作。有一點讓它變得不同的是,它不會顯示「set」命令。
非常感謝!它也幫助我。但是我擔心我只能接受一個答案。 – SeaStar
我找到了公認的答案沒有工作,但這樣做的:
if %ERRORLEVEL% neq 0 goto ERR
的[萬無一失的方法
可能重複檢查非零(錯誤)返回代碼在Windows批處理文件](http://stackoverflow.com/questions/10935693/foolproof-way-to-check-for-nonzero-error-return-code-in-windows-batch-file) – dbenham