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

Python调用.bat文件后无需等待其结束直接继续执行后续代码如何实现

原因说明

os.system 是同步阻塞接口,调用后会一直等待目标进程执行完成、退出后才会返回结果,所以会遇到必须手动关闭bat运行窗口才能执行后续print的情况。

解决方案

使用Python标准库的subprocess.Popen替代os.system即可实现非阻塞调用,这也是官方推荐的替换旧进程调用接口的方案。修改后的代码如下:

import subprocess

# 非阻塞启动bat文件,新开独立控制台窗口
subprocess.Popen(
    "scrcpy-console.bat",
    shell=True,
    creationflags=subprocess.CREATE_NEW_CONSOLE
)

print("continue")

参数说明

  • subprocess.Popen 调用后不会等待子进程运行结束,会直接返回,主进程可以继续执行后续代码
  • shell=True 用于让系统shell解析执行批处理文件,符合bat文件的运行要求
  • CREATE_NEW_CONSOLE 是Windows平台专属参数,会给bat文件新开一个独立的控制台窗口,和Python主进程窗口隔离,互不干扰。如果你不需要弹出独立窗口,可以删除这个参数。

额外提示

如果后续需要主动关闭启动的bat对应进程,可以把Popen的返回值保存下来,需要关闭时调用终止方法即可:

# 保存进程实例
proc = subprocess.Popen("scrcpy-console.bat", shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE)

# 后续需要关闭进程时调用
proc.terminate()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:09:04