Есть ли способ написать.bat файл Windows, чтобы убить процессы?
Поэтому каждый раз, когда я включаю машину для разработки, принадлежащую моей компании, мне приходится убивать более 10 процессов с помощью диспетчера задач или любого другого приложения для управления процессами, чтобы получить достойную производительность из своей среды IDE. Да, это процессы из программ, которые моя компания устанавливает на мою машину для обеспечения безопасности и соответствия требованиям. То, что я хотел бы сделать, - это иметь файл или сценарий.bat, который я мог бы просто запустить и уничтожить рассматриваемые процессы.
Кто-нибудь уже знает, как это сделать?
9 ответов
Вы можете сделать это с помощью '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 Home / basic, здесь есть несколько альтернатив:
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... Лучшее программное обеспечение, которое я когда-либо использовал для очистки вещей, которые запускаются автоматически.
Скачать PSKill. Напишите пакетный файл, который вызывает его для каждого процесса, который вы хотите удалить, передавая имя процесса для каждого.
Используйте Powershell! Встроенные командлеты для управления процессами. Примеры здесь (сложный путь), здесь(встроенный) и здесь (подробнее).
Здесь я написал пример команды, которую вы можете вставить в свой cmd
приглашение командной строки и написано для chrome.exe
,
FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)
За просто берет все PID
перечисленные ниже tasklist
команда и выполняет TASKKILL /PID
на каждом PID
tasklist /FO Table /M "chrome*" /NH
Если вы используете for в командном файле, просто используйте %%P вместо% P
Пожалуйста, найдите ниже логику, где это работает при условии.
Если мы просто позвоним taskkill /im applicationname.exe
, он убьет, только если этот процесс запущен. Если этот процесс не запущен, он выдаст ошибку.
Чтобы проверить, прежде чем takskill
вызывается проверка, чтобы убедиться, что выполнить taskkill
будет выполняться только в том случае, если процесс запущен, чтобы не выдавать ошибку.
tasklist /fi "imagename eq applicationname.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "applicationname.exe"