为啥此命令无法打印 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 命令的正确退出代码?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PowerShell 不处理这个 $?正确退出代码?

为啥python运行不了?

python`deactivate`命令无法退出virtualenv

Qt 调试崩溃/退出 python 并最终无法正确调试(例如,不在断点处停止)

为啥休眠不能执行命令

Emacs shell 无法识别 python 命令