Есть ли способ написать файл Windows .bat для завершения процессов?
-
09-06-2019 - |
Вопрос
Поэтому каждый раз, когда я включаю машину разработки, принадлежащую моей компании, мне приходится завершать более 10 процессов с помощью диспетчера задач или любого другого приложения для управления процессами, чтобы получить достойную производительность от моей IDE.Да, это процессы из программ, которые моя компания устанавливает на мою машину в целях безопасности и соответствия требованиям.Что я хотел бы сделать, так это иметь файл .bat или какой-то сценарий, который я мог бы просто запустить и уничтожить соответствующие процессы.
Кто-нибудь уже знает, как это сделать?
Решение
Вы можете сделать это с помощью 'taskkill'. С помощью параметра / IM вы можете указать имена изображений. Пример: р>
taskkill / im somecorporateprocess.exe
Вы также можете сделать это, чтобы «принудительно» убить:
taskkill / f / im somecorporateprocess.exe
Просто добавьте 1 строку для каждого процесса, который вы хотите уничтожить, сохраните его в виде файла .bat и вставьте в папку запуска. Проблема решена!
Если это устаревшая система, PsKill сделает то же самое . р>
Другие советы
taskkill /f /im "devenv.exe"
это принудительно уничтожит pid с именем exe "devenv.exe"
эквивалентно -9 в команде nix'y kill
Поскольку TASKKILL может быть недоступен в некоторых домашних/базовых выпусках Windows, вот несколько альтернатив:
TSKILL processName
или
TSKILL PID
Имейте в виду, что processName
не должно иметь .exe
суффикс и ограничен 18 символами.
Другой вариант: WMIC
:
wmic Path win32_process Where "Caption Like 'MyProcess.exe'" Call Terminate
wmic предлагает еще большую гибкость, чем Taskkill. wmic Path win32_process get
вы можете увидеть доступные поля, которые вы можете фильтровать.
Я предполагаю, что как разработчик, вы имеете некоторый уровень административного контроля над вашей машиной. Если это так, из командной строки запустите msconfig.exe. Вы можете удалить многие процессы даже из запуска, тем самым устраняя необходимость их уничтожения с помощью вышеупомянутых решений.
Получите автозапуска от Марка Руссиновича, парня из Sysinternals, который обнаружил Sony Rootkit ... Лучшее программное обеспечение, которое я когда-либо использовал для очистки вещей, которые запускаются автоматически.
Загрузите PSKill . Напишите пакетный файл, который вызывает его для каждого процесса, который вы хотите завершить, передавая имя процесса для каждого.
Используйте Powershell! Встроенные командлеты для управления процессами. Примеры здесь (сложно путь), здесь (встроенный) и здесь (подробнее).
Найдите приведенную ниже логику, где это работает при условии.
Если мы просто вызовем taskkill / im applicationname.exe
, он будет убит, только если этот процесс запущен. Если этот процесс не запущен, он выдаст ошибку.
Чтобы проверить перед вызовом takskill
, можно выполнить проверку, чтобы убедиться, что execute taskkill
будет выполняться только в том случае, если процесс запущен, чтобы он выиграл не выдает ошибку.
tasklist /fi "imagename eq applicationname.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "applicationname.exe"
Здесь я написал пример команды, которую можно вставить в приглашение командной строки cmd
, и он написан для chrome.exe
. Р>
FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)
for просто берет все PID
, перечисленные в приведенной ниже команде tasklist
, и выполняет TASKKILL / PID
для каждого PID
tasklist /FO Table /M "chrome*" /NH
Если вы используете for в командном файле, просто используйте %% P вместо% P