2014-07-13 1 views
1

python -c "exit(12)"을 실행하고 echo %errorlevel%을 실행하면 cmd.exe 창에서 12을 인쇄합니다. 그 후 python -c "exit(13)" & echo %errorlevel%을 실행하면 12이 인쇄됩니다.이 명령으로 파이썬 명령의 올바른 종료 코드가 인쇄되지 않는 이유는 무엇입니까?

왜 두 번째 명령이 올바른 종료 코드를 인쇄하지 못합니까?

+0

두 명령은 동일한 환경의 컨텍스트 내에서 실행되고있다. '&'연산자를 사용하지 않고 순차적으로 실행하면 기대 한 값을 얻을 수 있습니다. 파이썬은 여기서 무의미합니다. – BartoszKP

+0

@BartoszKP 사실 [이 문제를 해결하려고하기 때문에 파이썬을 사용해야합니다.] (http://stackoverflow.com/questions/24555044/why-sometimes-python-subprocess-failed-to-get-the-correct- exit-code-after-runnin). – 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" 
관련 문제