商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > python实现批量打开windowscmd过程

python实现批量打开windowscmd过程

  发布于2026-07-07 阅读(0)

扫一扫,手机访问

python批量打开windows cmd

近期遇到一个测试需求,需要同时打开三十多个cmd窗口,不间断地对某个服务器的80端口做tcping,用来观察链路的延迟和TCP层面的丢包重传情况。

既然是做压力测试,手动点开30多个cmd窗口显然不现实,所以索性写了个Python脚本来自动完成这个操作。

准备工作也不复杂,先把tcping.exe放进C:\Windows\System32目录,保证在cmd里可以直接调用它。

先看几个简单实现的用法

import os
import subprocess
os.system('tcping 192.168.88.2')
#用os.system可以在工作台上看到得到的结果
sub=subprocess.Popen('tcping  192.168.88.2',shell=True)
sub.wait()
#用subprocess.Popen在shell下实现,用wait()看回显结果

这里推荐使用subprocess

如果要同时启动多个进程,os.system显然就不太够用了。subprocess模块才是正解。

import subprocess
sub=subprocess.Popen('tcping -t 192.168.88.2',creationflags=subprocess.CREATE_NEW_CONSOLE)
#直接调用tcping.exe在新窗口打开
sub=subprocess.Popen('cmd.exe /C tcping -t 192.168.88.2',creationflags=subprocess.CREATE_NEW_CONSOLE)
#在cmd中调用tcping.exe在并新窗口打开

上面两种写法都能实现在新窗口中运行tcping。不过要注意的是,如果要结束这些进程,两种方式都只需要结束tcping.exe就行。第二种方式虽然走了一层cmd,但关闭cmd窗口并不能关掉里面的子进程。

实现批量打开

批量打开的写法其实就是一个简单的for循环:

import subprocess
for i in range(30):
     sub = subprocess.Popen('tcping -t 192.168.88.2', creationflags=subprocess.CREATE_NEW_CONSOLE)

由于tcping是持续运行的,不手动关闭或者按Ctrl+C不会自动停止。所以还需要一个配套的脚本来统一结束这些后台进程。

结束进程时有两种思路:按PID杀,或者按进程名杀。实测下来按PID杀不太靠谱——进程在运行时PID可能会变动,容易出现杀不干净的情况。相比之下,按进程名批量kill要稳妥得多。

kill进程名能够批量全部删除

import os
os.system('taskkill /IM tcping.exe /F')

查看进程号和进程名

import psutil
print(psutil.pids())
#查看进程号
pid_name = [psutil.Process(i).name() for i in psutil.pids()]
print(pid_name)
#查看进程名

ps: taskkill的用法

taskkill [/S system [/U username [/P [password]]]]

{[/FI filter] [/PID processid] | /IM imagename} [/T] [/F]

常用调用方式为:

python实现批量打开windowscmd过程

总结

从实际测试的角度来看,批量启动和批量清理这两步缺一不可。关键在于进程管理的方式要选对——按名称杀进程比按PID杀进程稳定得多。这样的脚本虽然在逻辑上非常简单,但在压力测试场景下却能省下大量重复劳动的时间。

本文转载于:https://www.jb51.net/python/363405huq.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注