从 Python 运行时获取 bat 文件的错误级别

Posted

技术标签:

【中文标题】从 Python 运行时获取 bat 文件的错误级别【英文标题】:Getting error level of a bat file when running it from Python 【发布时间】:2020-04-13 04:11:54 【问题描述】:

我有一个 .bat 文件,它调用不同的东西并运行不同的脚本来编译和构建由其他程序员开发的系统。 我正在尝试使用 Qpr​​ocess 从 Python 调用该 .bat 文件。 bat文件运行流畅。但是,如果 bat 文件由于某种原因失败,我的 python 脚本需要以某种方式终止。

我与一些编写了那个巨大的 .bat 文件的人进行了简短的讨论,他们告诉我 .bat 文件具有标准结构,并且如果出现故障会返回错误级别。

我真的不知道如何捕捉这些关卡,而且我对批处理编程也不太了解。错误级别是通用的吗?它可以从 Python 中捕获吗?

我用谷歌搜索了一下,发现一些非常古老的文章并没有教给我太多东西。任何人都有一个关于如何捕捉这些级别的简短示例?

【问题讨论】:

是的,它是通用的。所有程序和批处理命令都返回所谓的程序退出代码。见docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/…。 【参考方案1】:

批处理文件上下文中的错误级别意味着它将以特定代码退出。处理完成后,您可以立即查询此退出代码。

def properties(self):
    self.process=QProcess()
    self.process.finished.connect(self.onFinished)
    self.process.start('test.bat', ['arg'])

def onFinished(self,  exitCode,  exitStatus):
    [check exit code here...]

【讨论】:

以上是关于从 Python 运行时获取 bat 文件的错误级别的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件 - .bat 文件中的错误处理

bat获取python文件的返回值?

运行Python脚本时找不到vcvarsall.bat

python自动运行cmd,bat文件

win7运行bat文件为啥要以管理员才可以 否则权限不够啥原因?

python自动运行cmd,bat文件