Есть ли способ написать файл Windows .bat для уничтожения процессов?

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

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


person codeLes    schedule 29.08.2008    source источник
comment
Это также должно быть удобно, когда в среде автоматизации необходимо остановить запущенный подпроцесс, если он не может завершиться или ответить в течение приличного промежутка времени.   -  person Danny Staple    schedule 17.06.2015
comment
Я отправил ссылку на этот вопрос всем своим непосредственным коллегам, потому что у нас около 20 разработчиков программного обеспечения в компании с примерно 2000 инженерами (занимающимися САПР). Мы постоянно боремся с отделом ИТ-администрирования, потому что (из-за политики безопасности) мы почти не можем выполнять свою работу... (Технически это не помогает, но приятно слышать, что у других разработчиков программного обеспечения, похоже, есть подобные проблемы. .)   -  person Scheff's Cat    schedule 14.05.2017


Ответы (9)


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

Пример:

taskkill /im somecorporateprocess.exe

Вы также можете сделать это, чтобы 'принудительно' убить:

Пример:

taskkill /f /im somecorporateprocess.exe

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

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

person Factor Mystic    schedule 29.08.2008
comment
LOL — somecorporateprocess.exe В значительной степени подводит итог отсоединению корпоративных ИТ от команд разработчиков. - person maplemale; 04.06.2014
comment
Я успешно использовал taskkill /F /IM <processname.exe> /T для принудительного закрытия всех процессов по их имени. - person Benj; 19.08.2015
comment
не работает на win10 для процесса kill backgrounds. весь фоновый процесс в win 10 с именем RuntimeBroker.exe и при попытке убить ничего не произошло. - person Mostafa; 15.06.2018

taskkill /f /im "devenv.exe"

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

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

person DevelopingChris    schedule 29.08.2008
comment
Это не сработало, пока я не добавил в команду флаг /f. Спасибо! - person Denis M. Kitchen; 31.01.2013
comment
Это уничтожит ВСЕ записи с указанным именем. Особенно удобно, когда программа дает обратный эффект и открывает notepad.exe 1000 раз в фоновом режиме:] *гм* - person Richard de Wit; 05.02.2014
comment
taskill не распознается как внутренняя или внешняя команда - person integrater; 17.09.2020
comment
Пример может быть от кого-то, кто действительно ненавидит MS Visual Studio. - person Ulysses Alves; 10.03.2021

Поскольку TASKKILL может быть недоступен в некоторых домашних/базовых версиях Windows, вот несколько альтернатив:

TSKILL processName

or

TSKILL PID

Имейте в виду, что processName не должен иметь суффикс .exe и ограничен 18 символами.

Другой вариант WMIC :

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic предлагает еще большую гибкость, чем taskkill, благодаря своим SQL-подобным сопоставлениям. С помощью wmic Path win32_process get вы можете увидеть доступные поля, которые можно отфильтровать (а % можно использовать в качестве подстановочного знака).

person npocmaka    schedule 02.02.2015

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

person Jason Z    schedule 29.08.2008

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

person Brian Stewart    schedule 29.08.2008

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

person Shog9    schedule 29.08.2008

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

person slipsec    schedule 29.08.2008

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

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

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

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

if errorlevel 1 taskkill /f /im "applicationname.exe"
person Sarath KS    schedule 26.10.2016
comment
проще просто перенаправить сообщение об ошибке taskkillto nul - person Stephan; 26.10.2016

Здесь я написал пример команды, которую вы можете вставить в приглашение командной строки 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

person Eduard Florinescu    schedule 12.02.2018