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等软件