如何通过WMIC按进程名、-pf参数及Thread值筛选并终止进程?
批处理实现多条件筛选并终止指定进程
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 检查线程号参数是否传入 if "%~1"=="" ( echo 请传入目标线程号,示例:kill_repl_thread.bat 33 pause exit /b 1 ) :: 执行进程筛选与终止 echo 正在处理线程号为 %1 的目标进程... wmic process where "name='_progres.exe' AND commandline like '%%Pro2-XXXTest%%' AND commandline like '%%Thread=%1%%'" call terminate :: 反馈执行结果 if %errorlevel% equ 0 ( echo 操作完成,已终止符合条件的进程(若存在) ) else ( echo 未找到匹配进程或执行出错 ) endlocal
代码说明
- 参数检查:判断是否传入线程号参数,未传入则提示用法并退出
- WMIC多条件筛选:
name='_progres.exe':精确匹配进程名,避免误杀其他同名进程commandline like '%%Pro2-XXXTest%%':匹配命令行中包含Pro2-XXXTest的进程(%%是批处理中对WMIC通配符%的转义)commandline like '%%Thread=%1%%':匹配命令行中包含Thread=传入线程号的进程,%1为批处理接收的线程号参数
- 进程终止:通过
call terminate直接调用WMIC的终止方法处理匹配到的进程 - 结果反馈:根据WMIC执行的错误码提示操作结果
注意事项
- 调用批处理时必须传入线程号,例如:
kill_repl_thread.bat 33 - 需要以管理员权限运行批处理,否则可能因权限不足无法终止进程
- 若目标进程的命令行参数存在特殊字符,需调整
like语句的匹配规则以适配 - WMIC的字符串匹配默认大小写不敏感,无需严格区分大小写
内容的提问来源于stack exchange,提问作者Pitchfork Guy
相关产品推荐
相关产品推荐

