You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本中启动独立CMD终端以持续检测Windows进程是否冻结

解决Python脚本启动独立CMD终端重启进程后继续检测的问题

核心问题在于os.system()是同步执行的——它会一直等待你调用的bat脚本执行完毕,才会继续运行Python的后续检测逻辑。要让Python立刻回到检测工作,你需要用异步启动独立终端的方式,这里推荐用Python标准库的subprocess模块来实现。

具体实现方案

直接替换os.system(r'xxx.bat')为以下代码:

import subprocess

# 检测到进程冻结时执行这行代码
subprocess.Popen(
    ['cmd.exe', '/c', 'xxx.bat'],
    creationflags=subprocess.CREATE_NEW_CONSOLE
)

参数解释

  • cmd.exe /c xxx.bat:让CMD终端执行指定的bat脚本,执行完成后自动关闭窗口(如果希望窗口保持打开方便排查,可以把/c换成/k)。
  • creationflags=subprocess.CREATE_NEW_CONSOLE:这是Windows特有的参数,它会强制新启动的CMD在一个独立的终端窗口中运行,完全脱离Python脚本的控制台,同时Python脚本会立刻跳过这行代码,继续执行后续的进程检测逻辑。

额外提示

  • 尽量给bat文件使用绝对路径,比如r'C:\your\folder\xxx.bat',避免因为Python脚本的工作目录不同导致找不到文件。
  • 如果需要确认bat脚本是否成功启动,可以把Popen的返回值存下来:proc = subprocess.Popen(...),之后可以用proc.poll()查看进程状态,但这不影响Python脚本继续执行检测任务。

内容的提问来源于stack exchange,提问作者Mabignix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 16:17:35