2

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

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

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

4

2 回答 2

3

假设 rundll32.exe 在您启动 Gothic2.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
于 2012-11-02T17:02:40.850 回答
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当您确定它的行为正常时删除。

于 2012-11-02T17:02:47.940 回答