Метод CMD для родного сценария Windows
Ниже приведено решение для пакетного сценария, в котором используются переменные Tasklist и циклы FOR /F и разбор переменных соответственно, чтобы получить только имена процессов, выполняемых конкретным пользователем.
С Findstr эти результаты затем анализируются, чтобы исключить любые указанные исключения, которые вы установили в верхней части переменной 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
Дополнительные ресурсы