Skip to content

cmd 脚本中关闭其它运行中的命令提示符窗口

以下是几种高效且可靠的BAT脚本方案,用于关闭其他正在运行的命令提示符窗口(CMD窗口),按实现原理分类并附详细说明:


方案一:通过窗口标题精准关闭(推荐)

适用场景:需关闭特定标题的CMD窗口(需提前用title命令设置窗口标题)

batch
@echo off
:: 设置当前窗口标题(避免误关自身)
title SafeWindow
 
:: 关闭指定标题的窗口(示例:关闭标题为 "Redis-Service" 的窗口)
taskkill /f /fi "WINDOWTITLE eq Redis-Service*" >nul 2>&1
 
:: 关闭多个窗口(用空格分隔标题)
for %%t in ("Window1" "Window2") do (
    taskkill /f /fi "WINDOWTITLE eq %%t*" >nul 2>&1
)
  • 优势:
    • 精准定位目标窗口,避免误关闭。
    • 支持批量关闭多个指定标题的窗口。

方案二:关闭所有其他 CMD 窗口(排除自身)

适用场景:关闭除当前脚本外的所有CMD窗口

batch
@echo off
setlocal enabledelayedexpansion 
 
:: 获取当前窗口PID
for /f "tokens=2" %%a in ('tasklist /fi "imagename eq cmd.exe" /fo list ^| findstr "PID:"') do (
    set current_pid=%%a 
)
 
:: 关闭其他CMD进程
for /f "tokens=2" %%b in ('tasklist /fi "imagename eq cmd.exe" /nh') do (
    if "%%b" neq "!current_pid!" taskkill /f /pid %%b >nul
)

原理:

  • tasklist获取所有 CMD 进程的 PID
  • 排除当前脚本的PID(!current_pid!
  • 强制终止其他进程

⚠️ 注意事项:

  • 权限要求:
    • 关闭其他用户的CMD窗口需管理员权限,右键脚本选择 “以管理员身份运行”
  • 强制关闭风险:
    • /f参数强制终止可能丢失未保存数据,非必要可移除
  • 精准性提升:
    • 结合端口号定位(如关闭运行8080端口的 CMD):

      batch
      for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8080') do taskkill /f /pid %%a

各方案对比总结

场景推荐方案关键命令风险控制
关闭特定标题窗口方案一taskkill /fi "WINDOWTITLE eq"标题唯一性保障
关闭所有其他CMD窗口方案二taskkill+PID过滤排除自身PID

提示:可通过任务管理器监控效果(进程名cmd.exe)。脚本测试前建议备份数据,强制结束进程可能导致未保存内容丢失。