多实例运行时,如何用bat文件关闭特定目录下的EXE进程
你原来的taskkill /f demo.exe会直接终止所有名为demo.exe的进程,自然会误杀其他目录的实例。要精准关闭特定目录下的实例,得先找到对应进程的PID,再通过PID终止,下面给两种可行的bat写法:
方法一:用WMIC精确匹配进程路径
@echo off set "TARGET_EXE=demo.exe" set "TARGET_PATH=D:\demoFolder\" :: 查找目标路径下的demo.exe进程PID并终止 for /f "tokens=2 delims=," %%a in ('wmic process where "name='%TARGET_EXE%' and executablepath='%TARGET_PATH%%TARGET_EXE%'" get processid /format:csv ^| findstr /v "ProcessId"') do ( taskkill /f /pid %%a ) pause
WMIC可以直接通过executablepath匹配进程的完整执行路径,精准定位到D:\demoFolder\demo.exe,提取它的PID后用taskkill终止,不会影响其他目录的实例。
方法二:用tasklist结合findstr筛选路径
@echo off set "TARGET_EXE=demo.exe" set "TARGET_PATH=D:\demoFolder\" :: 遍历进程列表,筛选出目标路径的demo.exe并终止 for /f "tokens=2" %%a in ('tasklist /v /fi "imagename eq %TARGET_EXE%" /fo csv ^| findstr /i "%TARGET_PATH%"') do ( taskkill /f /pid %%~a ) pause
tasklist /v会显示进程的详细路径,先用/fi筛选出所有demo.exe,再用findstr匹配目标路径,提取PID时用%%~a去掉CSV格式的引号,最后终止对应进程。
内容的提问来源于stack exchange,提问作者Vipul Garg
相关产品推荐
相关产品推荐

