Batch Prozess mit Batch Datei killen?

...komplette Frage anzeigen

2 Antworten

Batchdateien laufen über cmd.exe. Um die cmd.exe zu beenden, benutzt du TASKKILL wie zalto beschrieben hat. Gibt es mehrere CMD-Prozesse, musst du den Zielprozess anhand seines Fenstertitels erkennen:

FOR /F "tokens=2,9,*" %%A IN ('tasklist /NH /V /FI "imagename eq cmd.exe"') DO if "%%~C" == "Fenstertitel des zu beenden Prozesses" taskkill /F /PID %%A

Diese Befehlskette sucht in der Ausgabe des TASKLIST-Befehls nach dem entsprechenden Fenstertitel in der letzten Spalte (Token 10 und folgende). Findet er ihn, beendet er den CMD-Prozess anhand seiner Prozess-ID. Damit verhinderst du, dass die anderen CMD-Prozesse mitbeendet werden.

Ist dir der Fenstertitel nur zum Teil bekannt, kannst du auch über FINDSTR arbeiten:

FOR /F "tokens=2" %%A IN ('tasklist /NH /V /FI "imagename eq cmd.exe" ^| findstr /i /C:"Teil des Fenstertitel" ^| findstr /v "findstr"') DO taskkill /F /PID %%A

Da der aktuelle Befehl immer im Fenstertitel der zugehörigen Batchdatei steht, muss die Datei sich selbst aus der Schusslinie nehmen, was du mit "FINDSTR /V findstr" machst. Dadurch werden alle Fenstertitel mit "findstr" ausgeschlossen. Enthält der Zielprozess auch "findstr" im Fenstertitel, kannst du den Titel der verwaltenden Batchdatei per TITLE-Befehl anpassen und dann das ausschließen.

Z.B. einen Prozess "cscript.exe" würde man so beenden:

TaskKill.exe /F /IM "cscript.exe"

Was möchtest Du wissen?