Есть ли способ написать .bat файл Windows, чтобы убить процессы? - PullRequest
105 голосов
/ 29 августа 2008

Таким образом, каждый раз, когда я включаю машину для разработки, принадлежащую моей компании, мне приходится убивать более 10 процессов с помощью диспетчера задач или любого другого приложения для управления процессами, чтобы получить достойную производительность из моей IDE. Да, это процессы из программ, которые моя компания устанавливает на мою машину для обеспечения безопасности и соответствия требованиям. То, что я хотел бы сделать, - это иметь какой-нибудь BAT-файл или сценарий, который я мог бы просто запустить и уничтожить рассматриваемые процессы.

Кто-нибудь уже знает, как это сделать?

Ответы [ 9 ]

152 голосов
/ 29 августа 2008

Вы можете сделать это с помощью 'taskkill'. С помощью параметра / IM вы можете указать имена изображений. Пример:

taskkill / im somecorporateprocess.exe

Вы также можете сделать это для «принудительного» убийства:

taskkill / f / im somecorporateprocess.exe

Просто добавьте 1 строку для каждого процесса, который вы хотите уничтожить, сохраните как файл .bat и вставьте в папку запуска. Проблема решена!

Если это устаревшая система, PsKill сделает то же самое.

104 голосов
/ 29 августа 2008
taskkill /f /im "devenv.exe"

это принудительно убьет pid с именем exe "devenv.exe"

эквивалентно -9 в команде nix'y kill

6 голосов
/ 02 февраля 2015

Поскольку 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 вы можете увидеть доступные файлы, которые вы можете отфильтровать.

5 голосов
/ 29 августа 2008

Get Autoruns от Марка Руссиновича, парня Sysinternals, который обнаружил Sony Rootkit ... Лучшее программное обеспечение, которое я когда-либо использовал для очистки вещей, которые запускаются автоматически.

5 голосов
/ 29 августа 2008

Я предполагаю, как разработчик, у вас есть некоторый административный контроль над вашей машиной. Если это так, из командной строки запустите msconfig.exe. Вы можете удалить многие процессы даже из запуска, тем самым устраняя необходимость их уничтожения с помощью вышеупомянутых решений.

4 голосов
/ 29 августа 2008

Скачать PSKill . Напишите пакетный файл, который вызывает его для каждого процесса, который вы хотите прервать, передавая имя процесса для каждого.

1 голос
/ 29 августа 2008

Используйте Powershell! Встроенные командлеты для управления процессами. Примеры здесь (трудный путь), здесь (встроенный) и здесь (больше).

0 голосов
/ 13 февраля 2018

Здесь я написал пример команды, которую вы можете вставить в командной строке cmd, и она написана для chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

for просто принимает все PID s, перечисленные в приведенной ниже команде tasklist, и выполняет TASKKILL /PID на каждом PID

tasklist /FO Table /M "chrome*" /NH

Если вы используете for в командном файле, просто используйте %% P вместо% P

0 голосов
/ 26 октября 2016

Пожалуйста, найдите ниже логику, где это работает при условии.

Если мы просто вызовем taskkill /im applicationname.exe, он убьет только если этот процесс запущен. Если этот процесс не запущен, он выдаст ошибку.

Чтобы проверить перед вызовом takskill, можно выполнить проверку, чтобы удостовериться, что execute taskkill будет выполнено только в том случае, если процесс запущен, чтобы не выдавать ошибку.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...