在Windows批處理腳本中處理錯誤的常用方法是使用諸如
if errorlevel 1 ...
或if %errorlevel% neq 0 ...
之類的東西。經常有人希望錯誤處理代碼保存ERRORLEVEL。成功後,哪些cmd.exe內部命令將ERRORLEVEL清除爲0?
我相信所有外部命令總是會導致ERRORLEVEL被設置爲某個值,因此錯誤處理代碼必須在執行外部命令之前將環境變量中的ERRORLEVEL保留。
但是內部命令呢?問題是,一些內部命令在成功時將ERRORLEVEL清除爲0,有些則不然。我找不到任何文件指定哪些命令做什麼。
所以問題是,哪些內部命令在成功時將ERRORLEVEL清除爲0?這是不是關於返回的ERRORLEVEL代碼的一般問題,但嚴格關於成功結果。
有類似What is the easiest way to reset ERRORLEVEL to zero?和Windows batch files: .bat vs .cmd?的帖子給出部分答案。但我從來沒有見過一個全面的名單。
注:我一直好奇這個多年。所以我最終決定進行一系列實驗並提出一個明確的答案。我發佈這個Q & A分享我發現的東西。
請參閱:http://stackoverflow.com/questions/34987885/what-are-the-errorlevel-values-set-by-internal- cmd-exe -keys/ – Aacini