Есть ли способ написать.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"
Другие вопросы по тегам