【问题标题】:Close cmd window after loaded program finishes running加载程序完成运行后关闭 cmd 窗口
【发布时间】:2014-07-12 06:07:21
【问题描述】:

我有以下代码来运行一个bat文件并打开一个cmd 窗口:

def issue_command(*args):
     process = Popen(args, stdout=PIPE,     stderr=PIPE, shell=True)
return process.communicate()

args = [["cmd", "/c", "start",    "c:\ABAQUS_Jobs\abaqusjob.bat", "A2", "routineUEL", "8", "1"]]

for arg in args:
    out, err = issue_command(*arg)

现在,当 bat 文件中调用的程序结束时,我希望关闭打开的 cmd 窗口。我该怎么做?

编辑:

在 bat 文件中写入 exit 无效。退出似乎没有什么不同。但是我在一个示例 hello world bat 文件中测试了退出,它确实关闭了窗口。在我的情况下,程序完成运行,因为一条消息被写入 cmd 窗口但窗口没有关闭。我需要关闭它,以便其他 python 脚本可以运行。

【问题讨论】:

    标签: python batch-file cmd


    【解决方案1】:

    exit 命令添加到批处理文件的末尾。

    【讨论】:

      【解决方案2】:

      我不建议在批处理文件末尾使用exit 命令,因为如果您决定在命令提示符下运行该批处理文件(例如,测试它),它将退出 cmd.exe .

      您需要做的就是从参数列表中删除 start

      【讨论】:

      • 我需要包含 start 因为我想查看加载到 bat 文件中的程序的输出。该程序在执行时会向 cmd 窗口写入几条消息。
      • 无论如何,批处理文件都将在其自己的控制台窗口中运行。 cmd start 命令将生成第二个控制台窗口。
      • 在我的情况下它没有。我认为它在 python 终端或后台运行,因为我只能看到随着分析的进行而创建和修改的文件......这就是我包含 start 的原因。
      • 我不熟悉 Python,但我认为它可以让您在不隐藏窗口的情况下生成可执行文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多