Gibt es eine Möglichkeit, eine Windows-BAT-Datei zu schreiben, um Prozesse abzubrechen? [geschlossen]


114

Jedes Mal, wenn ich meine firmeneigene Entwicklungsmaschine einschalte, muss ich mehr als 10 Prozesse mit dem Task-Manager oder einer anderen Prozessmanagement-App beenden, um eine anständige Leistung meiner IDE zu erzielen. Ja, dies sind Prozesse aus Programmen, die mein Unternehmen aus Sicherheits- und Compliance-Gründen auf meinem Computer installiert. Ich möchte eine .bat-Datei oder ein Skript haben, mit dem ich die fraglichen Prozesse beenden kann.

Weiß jemand, wie man das macht?


Dies sollte auch dann nützlich sein, wenn in einer Automatisierungsumgebung ein weggelaufener Unterprozess beendet werden muss, wenn er nicht in angemessener Zeit beendet oder reagiert werden kann.
Danny Staple

Ich habe diesen Fragenlink an alle meine direkten Kollegen gesendet, da wir ungefähr 20 S / W-Entwickler in einem Unternehmen mit rund 2000 Ingenieuren (CAD) sind. Wir haben ständig Probleme mit der IT-Verwaltungsabteilung, weil wir (aufgrund von Sicherheitsrichtlinien) fast nicht in der Lage sind, unsere Arbeit zu erledigen ... (Es hilft technisch nicht, aber es ist schön zu hören, dass andere S / W-Entwickler ähnliche Probleme zu haben scheinen .)
Scheff

Antworten:


171

Sie können dies mit ' taskkill ' tun . Mit dem Parameter / IM können Sie Bildnamen angeben.

Beispiel:

taskkill /im somecorporateprocess.exe

Sie können dies auch tun, um das Töten zu erzwingen :

Beispiel:

taskkill /f /im somecorporateprocess.exe

Fügen Sie einfach eine Zeile pro Prozess hinzu, den Sie beenden möchten, speichern Sie sie als .bat-Datei und fügen Sie sie in Ihr Startverzeichnis ein. Problem gelöst!

Wenn dies ein Legacy-System ist, wird PsKill dasselbe tun.


34
LOL - "somecorporateprocess.exe" Fasst die Trennung der Unternehmens-IT von den Entwicklerteams ziemlich gut zusammen.
Maplemale

8
Ich hatte Erfolg taskkill /F /IM <processname.exe> /Tdamit, das Schließen aller Prozesse mit ihrem Namen zu erzwingen .
Benj

funktioniert nicht auf win10 für Kill Background-Prozess. Alle Hintergrundprozesse in Win 10 wurden benannt RuntimeBroker.exeund beim Versuch zu töten ist nichts passiert.
Mostafa

106
taskkill /f /im "devenv.exe"

Dadurch wird die PID mit dem Exe-Namen "devenv.exe" gewaltsam getötet.

entspricht -9 beim Befehl nix'y kill


3
Es hat nicht funktioniert, bis ich dem Befehl das Flag / f hinzugefügt habe. Danke dir!
Denis M. Kitchen

4
Dadurch werden ALLE Einträge mit dem angegebenen Namen gelöscht . Besonders praktisch, wenn ein Programm 1000 Mal im Hintergrund nach hinten losgeht und notepad.exe öffnet:] * ahem *
Richard de Wit

8

Da TASKKILL in einigen Home / Basic-Editionen von Windows möglicherweise nicht verfügbar ist, gibt es hier einige Alternativen:

TSKILL processName

oder

TSKILL PID

Denken Sie daran, dass processNamedas .exeSuffix nicht vorhanden sein sollte und auf 18 Zeichen begrenzt ist.

Eine weitere Option ist WMIC:

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

wmic bietet mit seinen SQL-ähnlichen Matchern noch mehr Flexibilität als taskkill. Mit wmic Path win32_process getkönnen Sie die verfügbaren Dateien anzeigen, die Sie filtern können (und %die als Platzhalter verwendet werden können).


5

Ich gehe davon aus, dass Sie als Entwickler ein gewisses Maß an administrativer Kontrolle über Ihren Computer haben. Wenn ja, führen Sie in der Befehlszeile msconfig.exe aus. Sie können viele Prozesse vom Start weg entfernen, wodurch die Notwendigkeit entfällt, sie mit den oben genannten Lösungen zu beenden.


5

Holen Sie sich Autoruns von Mark Russinovich, dem Sysinternals-Typ, der das Sony Rootkit entdeckt hat ... Die beste Software, die ich je zum Aufräumen von Dingen verwendet habe, die automatisch gestartet werden.


4

Herunterladen PSKill . Schreiben Sie eine Batch-Datei, die sie für jeden Prozess aufruft, den Sie tot sehen möchten, und geben Sie den Namen des Prozesses für jeden Prozess ein.



0

Bitte finden Sie die folgende Logik, wo es unter der Bedingung funktioniert.

Wenn wir einfach aufrufen taskkill /im applicationname.exe, wird es nur beendet, wenn dieser Prozess ausgeführt wird. Wenn dieser Prozess nicht ausgeführt wird, wird ein Fehler ausgegeben.

takskillUm zu überprüfen, ob zuvor aufgerufen wurde, kann eine Überprüfung durchgeführt werden, um sicherzustellen, taskkilldass die Ausführung nur ausgeführt wird, wenn der Prozess ausgeführt wird, damit kein Fehler ausgelöst wird.

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

if errorlevel 1 taskkill /f /im "applicationname.exe"

1
einfacher, nur die Fehlermeldung von umzuleiten taskkill zunul
Stephan

0

Hier habe ich einen Beispielbefehl geschrieben, den Sie in Ihre cmdEingabeaufforderung einfügen können und für den geschrieben wurde chrome.exe.

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

Das for nimmt nur alle PIDs, die im folgenden tasklistBefehl aufgeführt sind, und wird TASKKILL /PIDbei jedem ausgeführtPID

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

Wenn Sie das for in einer Batchdatei verwenden, verwenden Sie einfach %% P anstelle von% P.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.