Любой способ написать файл Windows .bat для уничтожения процессов? [закрыто]

114

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

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

codeLes
источник
Это также должно быть удобно, когда в среде автоматизации необходимо завершить убегающий подпроцесс, если он не может завершиться или ответить в течение приличного количества времени.
Дэнни Стейпл
Я отправил ссылку на этот вопрос всем своим прямым коллегам, потому что мы около 20 разработчиков программного обеспечения в компании с около 2000 инженеров (занимающихся САПР). Мы постоянно боремся с отделом ИТ-администрирования, потому что (из-за политики безопасности) мы почти не можем выполнять свою работу ... (Технически это не помогает, но приятно слышать, что у других разработчиков ПО, похоже, есть похожие проблемы .)
Scheff

Ответы:

171

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

Пример:

taskkill /im somecorporateprocess.exe

Вы также можете сделать это, чтобы « заставить » убить:

Пример:

taskkill /f /im somecorporateprocess.exe

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

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

Фактор Мистик
источник
34
LOL - "somecorporateprocess.exe" в значительной степени резюмирует разрыв корпоративных ИТ-отделов от команд разработчиков.
maplemale 04
8
Мне taskkill /F /IM <processname.exe> /Tудалось принудительно закрыть все процессы по их имени.
Benj
не работает на win10 для процесса уничтожения фона. весь фоновый процесс в win 10 назван, RuntimeBroker.exeи при попытке убить ничего не произошло.
Мостафа
106
taskkill /f /im "devenv.exe"

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

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

DevelopingChris
источник
3
Это не сработало, пока я не добавил к команде флаг / f. Спасибо!
Denis M. Kitchen
4
Это уничтожит ВСЕ записи с указанным именем. Особенно удобно, когда программа дает обратный эффект и открывает notepad.exe 1000 раз в фоновом режиме:] * кхм *
Ричард де Вит
8

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

TSKILL processName

или

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вы можете видеть доступные поля, которые вы можете фильтровать (и %могут использоваться как подстановочные знаки).

npocmaka
источник
5

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

Джейсон Зи
источник
5

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

Брайан Стюарт
источник
4

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

Shog9
источник
0

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

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

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

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

if errorlevel 1 taskkill /f /im "applicationname.exe"
Сарат Аванаву
источник
1
проще просто перенаправить сообщение об ошибке taskkillнаnul
Стефан
0

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

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

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

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

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

Эдуард Флоринеску
источник