问题描述
我想杀死在内存或任务管理器中运行的所有 notepad.exe 进程,并且必须只保留一个 notepad.exe 进程,我怎样才能只保留一个 notepad.exe 进程并关闭所有其他仍处于活动状态的记事本进程记忆? 我有时在内存中有 20 个活动的 notepad.exe 进程,我希望只有一个记事本进程必须在内存中保持活动状态
taskkill /IM notepad.exe /F
解决方法
将 TASKLIST 和 TASKKILL 与 FOR /F
命令结合使用可以实现此目的。
FOR /F "TOKENS=2 skip=1 delims=," %%G IN ('tasklist /v /nh /FI "imagename eq notepad.exe" /FO csv') DO taskkill /PID %%~G
,
执行此操作的几种方法包括 skip
,作为 for /f
函数的一部分或 more
作为 cmd.exe
的实用程序。所以这里有两个例子:
使用for
的跳过功能:
for /f "skip=1tokens=2*" %%i in ('tasklist ^| findstr "notepad"') do taskkill /PID %%i
或使用 more
for /f "tokens=2*" %%i in ('tasklist ^| findstr "notepad" ^|more +1') do taskkill /PID %%i
,
我不使用 Windows
来测试它,但您可以尝试使用模块 psutil 来获取名称中包含单词 notepad
的所有进程并列入列表。接下来,您可以获取除一个元素之外的所有元素(即除了第一个)并对每个元素运行 .kill()
import psutil
all_notepad = []
for item in psutil.process_iter(['name']):
if 'notepad' in item.name():
all_notepad.append(item)
for item in all_notepad[1:]: # get except first element
item.kill()