为啥此命令无法打印 Python 命令的正确退出代码?
Posted
技术标签:
【中文标题】为啥此命令无法打印 Python 命令的正确退出代码?【英文标题】:Why does this command fail to print the correct exit code of a Python command?为什么此命令无法打印 Python 命令的正确退出代码? 【发布时间】:2014-07-13 09:57:43 【问题描述】:在 cmd.exe 窗口中,当我运行 python -c "exit(12)"
然后运行 echo %errorlevel%
时,它会打印 12
。之后,当我运行python -c "exit(13)" & echo %errorlevel%
时,它会打印出12
。
为什么第二个命令无法打印正确的退出代码?
【问题讨论】:
两个命令都在同一个环境上下文中运行。如果您不使用&
运算符并按顺序运行它们,它将产生预期值。 Python 在这里无关紧要。
@BartoszKP 实际上我需要使用 Python,因为我正在尝试解决 this problem.
这与 你 想要解决的问题无关。在 this question 中,Python 无关紧要,因为它只涉及 cmd 的工作方式。虽然我不想编辑它,因为它看起来太多了,但如果你把它做得更笼统,这个问题对其他人会更有帮助。
【参考方案1】:
%errorlevel% 的替换发生在您运行命令时。它反映了当您按下“输入”键时 %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"
【讨论】:
以上是关于为啥此命令无法打印 Python 命令的正确退出代码?的主要内容,如果未能解决你的问题,请参考以下文章
python`deactivate`命令无法退出virtualenv