使用 taskkill 只杀死一个进程

Posted

技术标签:

【中文标题】使用 taskkill 只杀死一个进程【英文标题】:Kill only one process with taskkill 【发布时间】:2012-10-23 04:48:56 【问题描述】:

为了运行游戏,我需要启动它的 exe 两次,然后终止其中一个 rundll32.exe 进程。我不想每次都手动执行此操作,因此我将其放入批处理文件中,如下所示:

start Gothic2.exe
start Gothic2.exe
taskkill /IM rundll32.exe /F

有 2 个 rundll32.exe 实例正在运行并且都被杀死,我只需要终止其中一个。 PID 没有帮助,因为 rundll32.exe 每次启动时都会获得一个新的。 当有多个同名进程时,如何只杀死一个进程?

【问题讨论】:

【参考方案1】:

假设当您启动 Gothic2.exe 时 rundll32.exe 启动,并且您的系统上没有其他进程也在运行,并且可以杀死 rundll32.exe 的第一个实例,您可以使用这个:

start Gothic2.exe
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe') do set PIDTOKILL=%%x
start Gothic2.exe
taskkill /F /PID %PIDTOKILL%

我想如果你想杀死 rundll32.exe 的第二个实例,你可以这样修改它:

start Gothic2.exe
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe') do set PIDTOSAVE=%%x
start Gothic2.exe
for /f "tokens=2" %%x in ('tasklist ^| findstr rundll32.exe ^| findstr /v %PIDTOSAVE%') do taskkill /F /PID %%x

【讨论】:

成功了,谢谢!这证明了我还需要了解多少关于批处理脚本的知识。【参考方案2】:

这假设你不关心你杀死哪个实例:

@echo off
for /f "tokens=2 delims=," %%T in ('tasklist /nh /fi "imagename eq rundll32.exe" /fo csv') do (
  echo taskkill /F /pid %%~T 
  goto :eof
)

上面的版本只是回显taskkill 命令(您可以复制粘贴以执行测试),当您确定echo 的行为正常时删除它。

【讨论】:

以上是关于使用 taskkill 只杀死一个进程的主要内容,如果未能解决你的问题,请参考以下文章

在windows中使用管道和taskkill用pid杀死进程

window下用taskkill杀死进程

停止Node服务器

text 任务杀死taskkill查找进程窗口

杀死进程命令

windows 批量杀死进程方法