亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

成功后哪個cmd.exe內部命令將ERRORLEVEL清除為0?

成功后哪個cmd.exe內部命令將ERRORLEVEL清除為0?

成功后哪個cmd.exe內部命令將ERRORLEVEL清除為0?在Windows批處理腳本中處理錯誤的常用方法是使用if errorlevel 1 ...或等if %errorlevel% neq 0 ...。通常,人們希望錯誤處理代碼保留ERRORLEVEL。我相信所有外部命令總是會導致ERRORLEVEL被設置為某個值,因此錯誤處理代碼必須在執行外部命令之前在環境變量中保留ERRORLEVEL。但內部命令怎么樣?問題是,一些內部命令在成功時將ERRORLEVEL清除為0,而有些則沒有。而且我找不到任何指定哪些命令做什么的文檔。所以問題是,哪些內部命令成功后將ERRORLEVEL清除為0?這不是關于返回的ERRORLEVEL代碼的一般問題,而是關于成功結果的嚴格問題。注意: 多年來我一直很好奇。所以我最終決定進行一系列實驗并得出一個明確的答案。我發布此問答來分享我發現的內容。
查看完整描述

2 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您對CALL命令的描述不完整:


CALL:如果CALLed命令沒有設置它,則清除ERRORLEVEL。示例:call echo OK。


檢查這個小例子:


@echo off


call :setTwo

echo Set two: %errorlevel%


call :preserve

echo Preserve: %errorlevel%


call echo Reset

echo Reset: %errorlevel%


call :subNotExists 2> NUL

echo Sub not exist: %errorlevel%


goto :EOF


:setTwo

exit /B 2


:preserve

echo Preserve

exit /B

輸出:


Set two: 2

Preserve

Preserve: 2

Reset

Reset: 0

Sub not exist: 1

CALL 描述應該說是這樣的:


CALL:如果CALLed命令沒有設置它,則清除ERRORLEVEL。示例:call echo OK,但如果被調用的命令是子例程,則它會保留先前的ERRORLEVEL。如果被調用的子程序不存在,則將ERRORLEVEL設置為1。


查看完整回答
反對 回復 2019-08-28
  • 2 回答
  • 0 關注
  • 1286 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號