用taskkill杀死所有notepad.exe进程,只剩下一个进程

问题描述

我想杀死在内存或任务管理器中运行的所有 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()