Python 批量打开 Windows CMD 窗口的实用方法

更新时间:2026-10-10 09:58:59 来源:本站整理 浏览:0

背景与需求

在测试网络链路时,经常需要同时打开多个 CMD 窗口,持续执行 tcping 命令以观察延迟和丢包情况。手动打开几十个窗口既耗时又容易出错,因此使用 Python 编写脚本实现自动化批量打开 CMD 窗口,可以显著提高工作效率。

基础用法示例

首先,将 tcping.exe 放置到 C:WindowsSystem32 目录下,确保在 CMD 中可以直接调用。以下是两种简单的调用方式:

import os
import subprocess

# 使用 os.system,结果直接显示在当前控制台
os.system('tcping 192.168.88.2')

# 使用 subprocess.Popen,通过 wait() 等待命令执行完成
sub = subprocess.Popen('tcping 192.168.88.2', shell=True)
sub.wait()

推荐使用 subprocess 模块

相比 os.system,subprocess 提供了更强大的进程控制能力,尤其适合同时启动多个独立进程。以下两种方式均可在新窗口中运行 tcping:

import subprocess

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

# 通过 cmd.exe 调用 tcping.exe,同样在新窗口打开
sub = subprocess.Popen('cmd.exe /C tcping -t 192.168.88.2', creationflags=subprocess.CREATE_NEW_CONSOLE)

两种方法都能实现新窗口运行,但终止进程时需要注意:第一种方法直接结束 tcping.exe 即可;第二种方法虽然通过 cmd.exe 调用,但仅结束 cmd.exe 并不能关闭窗口,需要同时结束 tcping.exe 进程。

批量打开多个 CMD 窗口

使用简单的 for 循环即可批量启动多个窗口:

import subprocess

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

由于 tcping -t 会持续运行,直到手动关闭窗口或按下 Ctrl+C,因此需要编写额外的脚本批量终止这些进程。

批量终止进程

终止进程有两种方式:按进程号或按进程名。推荐使用进程名,因为在实际运行中进程号可能会变化,导致无法准确终止。

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

上述命令会强制结束所有名为 tcping.exe 的进程。

查看进程号和进程名

如果需要查看当前运行的进程信息,可以使用 psutil 库:

import psutil

# 查看所有进程号
print(psutil.pids())

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

taskkill 命令参考

taskkill 的常用语法如下:

taskkill [/S system [/U username [/P [password]]]]
          {[/FI filter] [/PID processid] | /IM imagename} [/T] [/F]

常用参数说明:

  • /IM imagename:指定要终止的进程映像名称,如 tcping.exe。
  • /PID processid:指定要终止的进程号。
  • /F:强制终止进程。
  • /T:终止指定进程及其子进程。

总结

通过 Python 的 subprocess 模块,可以轻松实现批量打开 CMD 窗口并运行持续命令,配合 taskkill 命令批量终止进程,大大简化了网络测试中的重复操作。希望本文的方法能对您有所帮助。

原文链接:本站整理

本文来自互联网用户投稿,该文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 service@2cto.cc 进行投诉反馈,一经查实,立即处理!