Python启动Windows cmd(.bat)命令行并kill进程

Posted zhangphil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python启动Windows cmd(.bat)命令行并kill进程相关的知识,希望对你有一定的参考价值。

Python启动Windows cmd(.bat)命令行并kill进程

有时候需要通过Python启动一个Windows下的.bat文件,并在启动时候加入一些命令选项,比如典型的网络ping命令等。假设现在已经在Windows下写好了一个.bat文件,需要由Python启动,由Python接管这个.bat启动的进程,并在某些时机下关闭这个进程。

import subprocess, psutil
import time

if __name__ == '__main__':
    bat_path = r'.bat文件路径 可以跟一些启动参数选项'

    # 正常创建一个cmd命令的进程,并在python的标准输出管道窗口打印
    process = subprocess.Popen(bat_path, shell=False, stdout=subprocess.PIPE)

    # 将阻塞process的运转,意味着process不会再输出
    time.sleep(3)

    # 递归kill进程
    pobj = psutil.Process(process.pid)
    for c in pobj.children(recursive=True):
        c.kill()
    pobj.kill()

上面代码在启动一个.bat文件后,等待3秒再将这个.bat文件启动的进程kill掉。.bat输出的内容在Python的标准输出里面。

如果把process的创建改成:

process = subprocess.Popen(bat_path, creationflags=subprocess.CREATE_NEW_CONSOLE)

将会打开一个标准的Windows 控制台窗口(黑窗口)执行.bat。但仍可以在python代码里面通过pid句柄kill掉这个新开的Windows控制台窗口。

判断进程是否在运行:

psutil.Process(process.pid).is_running()

判断进程是否还存在:

psutil.pid_exists(进程的pid)

以上是关于Python启动Windows cmd(.bat)命令行并kill进程的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上的 Python 子进程:启动子进程“cmd.exe”并为其提供 bat 文件,停止主进程执行

windows 自定义批处理BAT/CMD启动Redis等软件

[windows bat]如何启动一个新的cmd窗口并在其内执行命令

windows cmd bat处理文件

bat 打开cmd 执行Python文件

python自动运行cmd,bat文件