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?

codeLes
quelle
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.

Faktor Mystic
quelle
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

Entwicklung von Chris
quelle
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).

npocmaka
quelle
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.

Jason Z.
quelle
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.

Brian Stewart
quelle
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.

Shog9
quelle
1

Benutze Powershell! Integrierte Cmdlets zum Verwalten von Prozessen. Beispiele hier (harter Weg), hier (eingebaut) und hier (mehr).

Slipsec
quelle
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"
Sarath Avanavu
quelle
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.

Eduard Florinescu
quelle