由於ERRORLEVEL是一個環境變量,在我有機會在我的批處理文件中檢查它之前,它的值是否可以更改?ERRORLEVEL是可靠的嗎?
回答
環境變量屬於當前的「過程」,因此它們不能從外部改變。如果您在批處理文件中檢查相關命令後的錯誤級別,則應該檢查正確的值。
您可以通過打開兩個命令窗口,並進入第一證實了這一點:
c:> set errorlevel=7
然後第二:
c:> set errorlevel=9
然後返回到第一和:
c:> echo %errorlevel%
7
您應該非常小心地設置errorlevel
環境變量順便說一下。這個特定的變量是一個特殊的變量,當你沒有專門設置它時,它會自動提供前一個程序的返回碼。
設置它顯式覆蓋此行爲,唯一的恢復方法是使用if errorlevel N
而不是環境變量(它繞過環境變量),或使用set errorlevel=
刪除覆蓋。
@paxdiable:對於在一個cmd.exe窗口中設置的任何(env)變量,您對'%errorlevel%'環境變量的說法是正確的。它永遠不會自動出現在任何其他已經打開的cmd.exe窗口中。 – 2010-08-11 18:01:52
是的,這是正確的。當我說錯誤級別是特殊的,那不是我所說的方面。沒有env-var從流程跳轉到流程。我只是警告反對設置錯誤級別,因爲它具有特殊的行爲通常,它設置防止。 – paxdiablo 2010-08-11 22:39:28
%errorlevel%
(它不是大小寫敏感)是一個非常特殊的環境變量。這完全不意味着由用戶或批處理腳本進行設置。
此外,你可能會碰到你執行調用set errorlevel=15
但張女士您成功執行set
命令的問題,可能必須重新設置%errorlevel%
你希望現在evaluete 0
。
如果您需要它
唯一「合法」的方式來評估%errorlevel%
環境變量,使用重複的if errorlevel
聲明:
if errorlevel 0 do somecommand
if errorlevel 1 do somethingelse
...
if errorlevel 255 do lastalternative
一切是很危險的。如果您確實需要幾行後使用當前%ERRORLEVEL%,然後使用類似
if errorlevel 0 do set myerrorlevel=0
,然後讀出%myerrorlevel%
...
如果錯誤級別X對於錯誤級別> = X爲真,則解析從0到255將導致始終執行0的命令。應該解析255到0(來自mod標誌,不是我的評論..) – 2011-01-08 11:39:12
- 1. 是mysqli_insert_id可靠嗎?
- 2. in_irq()是可靠的嗎?
- 3. activemq是可靠的嗎?
- 4. MongoDB是可靠的嗎?
- 5. ContactsContract.Contacts.LAST_TIME_CONTACTED是可靠的嗎?
- 6. Java:Is(int)是可靠的嗎?
- 7. Java的java.util.Random是可靠的嗎?
- 8. Flux without React ..是可靠的選擇嗎?
- 9. 可可綁定可靠嗎?
- 10. Is!document.cookie可靠嗎?
- 11. libmcrypt不可靠嗎?
- 12. TCP 100%可靠嗎?
- 13. $ _SERVER ['REQUEST_SCHEME']可靠嗎?
- 14. 現在Firebase onDisconnect不是100%可靠嗎?
- 15. 是BufferedInputStream.available()在Socket編程中可靠嗎?
- 16. Python的ftplib STOR可靠嗎?
- 17. AppEngine + django:依靠兩者都可靠嗎?
- 18. 腳本延遲可靠嗎?
- 19. 中止POST XHR可靠嗎?
- 20. localStorage在iPad上可靠嗎?
- 21. SQL Azure報告可靠嗎?
- 22. sched_getcpu()在Linux上可靠嗎?
- 23. websocket連接可靠嗎?
- 24. 字體嵌入可靠嗎?
- 25. 我可以依靠mod_rewrite嗎?
- 26. 我可以依靠MSXML4嗎?
- 27. HTTP Referrer。它可靠嗎?
- 28. simhash功能可靠嗎?
- 29. FindFirstFile,FindNextFile API不可靠嗎?
- 30. Laravel's Cache :: forever() - 可靠嗎?
%ERRORLEVEL%** ** IS可靠,爲大家誰扮演通過它的規則。在這場比賽中,誰的確經常是不可靠的,通常是用戶沒有按照規則玩牌......(我並不責怪用戶 - 微軟在這裏設置的規則非常模糊。) – 2010-08-11 17:45:21