为了运行游戏,我需要启动它的exe两次,然后杀死其中一个rundll32.exe进程。我不想每次都这样做,所以我把它放在一个像这样的批处理文件中:
start Gothic2.exe
start Gothic2.exe
taskkill /IM rundll32.exe /F
有两个运行rundll32.exe的实例,两个都被杀死,我只需要终止其中一个。 PID没有帮助,因为rundll32.exe每次启动都会获得一个新的。 当有更多具有相同名称的进程时,如何才能仅杀死一个进程?
答案 0 :(得分:3)
假设当你启动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
答案 1 :(得分:1)
这假设您不关心您杀死哪个实例:
@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
。