我想使用 taskkill 按用户名终止所有进程,使用以下命令:
taskkill /f /fi "USERNAME eq %username%"
问题是我想排除(跳过)一些进程(而不是全部杀死它们),例如 explorer.exe、taskmgr.exe、cmd.exe,当然还有当前的 CMD 实例
我如何使用 taskkill 排除这个进程?
谢谢
答案1
Windows 本机批处理脚本 CMD 方法
下面是使用批处理脚本的解决方案任务列表和为/F循环设置并相应地解析变量,以仅获取特定用户正在运行的进程的进程名称。
和查找字符串然后进一步解析这些结果以排除您在Exclusions
顶部变量中设置的任何指定的排除。
它将获取最终剩余的结果并终止该特定用户名的进程名称,并通过批处理脚本为您提供所需的结果,正如所解释的那样。
批处理脚本
要使此操作生效,只需设置两个变量,即 和Username
,Exclusions
其余变量将正常工作并按您的需要执行其余过程。只需指定完整的进程名称,并用空格将它们一一分开,就像下面的脚本一样。
@ECHO ON
SET Username=user
SET Exclusions=explorer.exe taskmgr.exe cmd.exe
SET tmpfl=%temp%\%~n0tmp.dat
IF EXIST "%tmpfl%" DEL /F /Q "%tmpfl%"
SET Exclusions=%Exclusions% taskkill.exe
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "DELIMS=: TOKENS=2" %%A IN ('TASKLIST /FI "USERNAME EQ %Username%" /FO LIST ^| FIND /I "Image name:"') DO (
SET var=%%~A
SET var=!var: =!
ECHO !var! | FINDSTR /I /V "%Exclusions%">>"%tmpfl%"
)
FOR /F "USEBACKQ TOKENS=*" %%A IN ("%tmpfl%") DO (
TASKKILL /F /FI "USERNAME eq %Username%" /IM %%~A
)
GOTO :EOF
批处理脚本 2
@ECHO ON
CD /D "%~DP0"
SET Exclusions=cmd.exe explorer.exe taskmgr.exe
SET tmpfl=%~n0tmp.dat
IF EXIST "%tmpfl%" DEL /F /Q "%tmpfl%"
SET Exclusions=%Exclusions% taskkill.exe
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "DELIMS=: TOKENS=2" %%A IN ('TASKLIST /FI "USERNAME EQ %Username%" /FO LIST ^| FIND /I "Image name:"') DO (
SET var=%%~A
SET var=!var: =!
ECHO !var! | FINDSTR /I /V "%Exclusions%">>"%tmpfl%"
)
FOR /F "USEBACKQ TOKENS=*" %%A IN ("%tmpfl%") DO (
TASKKILL /F /FI "USERNAME eq %Username%" /IM %%~A
)
DEL /F /Q "%tmpfl%"
GOTO :EOF
更多资源
答案2
我个人会使用 powershell 来执行此操作。
像这样:
$processes = Get-Process -IncludeUserName | where {$_.UserName -like "*USERNAME*"}
$tobeignored = @("explorer","Taskmgr","cmd")
foreach($process in $processes)
{
if($tobeignored.Contains($process.ProcessName))
{
continue;
}
else
{
Stop-Process $process.Id -Force
}
}
我还没有测试运行这个,我有点不想杀死我自己的进程:) 如果它不工作请告诉我
答案3
您可以通过为 指定多个过滤器来实现此目的taskkill
。例如,如果您想排除 explorer.exe,请为图像名称添加一个过滤器不是等于 explorer.exe (带有ne
运算符):
taskkill /f /fi "USERNAME eq %username%" /fi "IMAGENAME ne explorer.exe"