Я хочу убить все процессы с помощью taskkill по имени пользователя, с помощью этой команды:
taskkill /f /fi "USERNAME eq %username%"
Проблема в том, что я хочу исключить (пропустить) некоторые процессы (не уничтожать их все), такие как explorer.exe, taskmgr.exe, cmd.exe и, конечно, текущий экземпляр CMD
Как я могу исключить эти процессы с помощью Taskkill?
Спасибо
taskkill
, отредактируйте свой вопрос, чтобы удалить тег пакетного режима, чтобы увеличить ваши шансы на получение ответов (которые могут основываться или не основываться на пакетном режиме). :)Ответы:
Метод CMD для родного сценария Windows
Ниже приведено решение для пакетного сценария, в котором используются переменные Tasklist и циклы FOR / F и разбор переменных соответственно, чтобы получить только имена процессов, выполняемых конкретным пользователем.
С Findstr эти результаты затем анализируются далее, чтобы исключить любые указанные исключения, которые вы установили в
Exclusions
переменной вверху.Он возьмет последние оставшиеся результаты и уничтожит эти имена процессов для этого конкретного имени пользователя, что даст вам желаемые результаты с помощью пакетного сценария, как объяснено.
Пакетный скрипт
Для этого нужно установить только две переменные:
Username
иExclusions
, и остальные, а остальные будут работать и выполнять оставшуюся часть процесса по мере необходимости. Просто укажите полные имена процессов, разделенные пробелом один рядом с другим, как в приведенном ниже сценарии.Пакетный скрипт 2
Дополнительные ресурсы
источник
Я бы лично сделал это с помощью powershell.
Что-то вроде этого:
Я не был в состоянии проверить это, я вроде не хочу убивать свои собственные процессы :) Дайте мне знать, если это не работает (ы)
источник
Вы можете сделать это, указав несколько фильтров для
taskkill
. Например, если вы хотите исключить explorer.exe, добавьте фильтр для имени образа, не совпадающего с explorer.exe (сne
оператором):источник