Jakikolwiek sposób na napisanie pliku .bat systemu Windows w celu zabicia procesów? [Zamknięte]

114

Za każdym razem, gdy włączam komputer programistyczny należący do mojej firmy, muszę zabić ponad 10 procesów za pomocą Menedżera zadań lub dowolnej innej aplikacji do zarządzania procesami, aby uzyskać przyzwoitą wydajność z mojego środowiska IDE. Tak, są to procesy z programów, które moja firma instaluje na moim komputerze w celu zapewnienia bezpieczeństwa i zgodności. Chciałbym mieć jakiś plik .bat lub skrypt, za pomocą którego mógłbym zabić te procesy.

Czy ktoś wie, jak to zrobić?

codeLes
źródło
Powinno to być przydatne również wtedy, gdy w środowisku automatyzacji i uciekający podproces musi zostać zakończony, jeśli nie zakończy się lub nie zareaguje w przyzwoitym czasie.
Danny Staple
Opublikowałem ten link do wszystkich moich bezpośrednich kolegów, ponieważ jesteśmy około 20 programistami S / W w firmie zatrudniającej około 2000 inżynierów (zajmujących się CAD). Ciągle borykamy się z działem administracji IT, ponieważ (ze względu na politykę bezpieczeństwa) prawie nie jesteśmy w stanie wykonać naszej pracy ... (Nie pomaga to technicznie, ale miło słyszeć, że inni programiści S / W wydają się mieć podobne problemy .)
Scheff

Odpowiedzi:

171

Możesz to zrobić za pomocą „ taskkill ”. Za pomocą parametru / IM można określić nazwy obrazów.

Przykład:

taskkill /im somecorporateprocess.exe

Możesz to również zrobić, aby wymusić zabójstwo:

Przykład:

taskkill /f /im somecorporateprocess.exe

Po prostu dodaj jeden wiersz na proces, który chcesz zabić, zapisz go jako plik .bat i dodaj do katalogu startowego. Problem rozwiązany!

Jeśli jest to starszy system, PsKill zrobi to samo.

Factor Mystic
źródło
34
LOL - „somecorporateprocess.exe” W dużym stopniu podsumowuje odłączenie korporacyjnego IT od zespołów programistów.
maplemale
8
Udało mi taskkill /F /IM <processname.exe> /Tsię wymusić zamknięcie wszystkich procesów według ich nazwy.
Benj
nie działa na win10 dla procesu zabijania tła. cały proces w tle w win 10 został nazwany, RuntimeBroker.exea kiedy spróbujesz zabić, nic się nie stało.
Mostafa
106
taskkill /f /im "devenv.exe"

to wymusi zabicie pid o nazwie exe "devenv.exe"

odpowiednik -9 w poleceniu nix'y kill

DevelopingChris
źródło
3
Nie działało, dopóki nie dodałem flagi / f do polecenia. Dziękuję Ci!
Denis M. Kitchen
4
Spowoduje to zabicie WSZYSTKICH wpisów o podanej nazwie. Szczególnie przydatny, gdy gaśnie programu i otwiera notepad.exe 1000 razy w tle:] * hm *
Richard de Wit
8

Ponieważ TASKKILL może być niedostępny w niektórych Home / podstawowych wydaniach okien, tutaj jest kilka alternatyw:

TSKILL processName

lub

TSKILL PID

Pamiętaj, że processNamenie powinno mieć .exesufiksu i jest ograniczone do 18 znaków.

Inną opcją jest WMIC:

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

wmic oferuje jeszcze większą elastyczność niż taskkill dzięki dopasowaniom podobnym do SQL. Dzięki temu wmic Path win32_process getmożesz zobaczyć dostępne pola, które możesz filtrować (i %mogą być używane jako symbole wieloznaczne).

npocmaka
źródło
5

Zakładam, że jako programista masz pewien stopień kontroli administracyjnej nad swoim komputerem. Jeśli tak, z wiersza poleceń uruchom msconfig.exe. Możesz usunąć nawet uruchomienie wielu procesów, eliminując tym samym potrzebę ich zabijania za pomocą wyżej wymienionych rozwiązań.

Jason Z
źródło
5

Uzyskaj Autoruns Mark Russinovichem, z Sysinternals facet, który odkrytych Sony Rootkit ... najlepszy program jaki kiedykolwiek używane do czyszczenia rzeczy zacząć automatycznie.

Brian Stewart
źródło
4

Pobierz PSKill . Napisz plik wsadowy, który wywołuje go dla każdego procesu, który chcesz martwy, przekazując nazwę procesu dla każdego.

Shog9
źródło
0

Proszę znaleźć poniższą logikę, w której działa pod warunkiem.

Jeśli po prostu zadzwonimy taskkill /im applicationname.exe, zabije tylko wtedy, gdy ten proces jest uruchomiony. Jeśli ten proces nie jest uruchomiony, zgłosi błąd.

Aby sprawdzić przed takskillwywołaniem, można sprawdzić, czy polecenie execute taskkillzostanie wykonane tylko wtedy, gdy proces jest uruchomiony, aby nie zgłaszał błędów.

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

if errorlevel 1 taskkill /f /im "applicationname.exe"
Sarath Avanavu
źródło
1
łatwiej jest po prostu przekierować komunikat o błędzie taskkilldonul
Stephan
0

Tutaj napisałem przykładowe polecenie, które można wkleić w cmdwierszu poleceń i jest przeznaczone dla chrome.exe.

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

For po prostu pobiera wszystkie PIDwymienione w poniższym tasklistpoleceniu i wykonuje TASKKILL /PIDna każdymPID

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

Jeśli używasz for w pliku wsadowym, po prostu użyj %% P zamiast% P

Eduard Florinescu
źródło