2014-07-13 73 views
1

在cmd.exe窗口中,當我運行python -c "exit(12)",然後運行echo %errorlevel%時,它會打印12。之後,當我運行python -c "exit(13)" & echo %errorlevel%時,它會打印12爲什麼此命令無法輸出Python命令的正確退出碼?

爲什麼第二個命令無法打印正確的退出碼?

+0

這兩個命令都被同一個環境中上下文中運行。如果不使用'&'運算符並按順序運行,它將產生期望值。 Python在這裏是無關緊要的。 – BartoszKP

+0

@BartoszKP其實我需要使用Python,因爲我試圖解決[這個問題](http://stackoverflow.com/questions/24555044/why-sometimes-python-subprocess-failed-to-get-the-correct-退出代碼後飛奔)。 – userpal

+0

這與您*試圖解決的問題無關。在*這個問題* Python是無關緊要的,因爲它只涉及* cmd *的工作方式。我不想編輯它,因爲它看起來太多了,但如果你使它更通用一些,這個問題對其他人會更有幫助。 – BartoszKP

回答

3

運行該命令時會發生%errorlevel%的替換。它反映了當你按下'enter'鍵時%errorlevel%的值。

例如,考慮:

> set foo=foo 

> echo %foo% 
foo 

> set foo=bar & echo %foo% 
foo 

> echo %foo% 
bar 

您可以檢查錯誤級別是這樣但是:

> python -c 'exit(13)' & if errorlevel 13 echo "its 13"