Prozess mit bestimmtem Parameter beenden

JahniS01

Cadet 2nd Year
Registriert
Dez. 2017
Beiträge
17
Hallo Allerseits.

Ich suche nach einer Möglichkeit Prozesse die mit bestimmten Parametern gestartet wurden gezielt zu beenden.
Vorzugsweise mit batch, notfalls auch mit anderen Scipten, aber es sollte automatisiert funktionieren.

Zum Ablauf:
Ein kleines batch Script prüft mehrere Prozesse auf korrekte Funktion, z.B.:
Prozess.exe 001
Prozess.exe 002
Prozess.exe 003
Wird ein Fehler erkannt, soll exakt nur dieser eine Prozess (z.B. Prozess.exe 002) beendet werden,
die anderen Prozess.exe sollen unberührt weiter laufen.

Ich kann die Prozesse zwar manuell über den TaskManager und die Befehlszeile identifizieren,
hab aber noch keine Möglichkeit gefunden dies über ein Script zu bewerkstelligen.

Die PID hilft mir hier nicht wirklich weiter, da die ja nicht statisch ist, sondern immer mal neu vergeben werden kann.

Hat jemand eine Idee?
Danke im Voraus :)
 
Zuletzt bearbeitet:
Du kannst die PID aber rausfinden. Z.B. in Powershell

Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "Prozess.exe 002" } | Select-Object ProcessId
 
  • Gefällt mir
Reaktionen: JahniS01, quaaaak, madmax2010 und 2 andere
oder beim start direkt die PID mitschreiben
 
nullPtr schrieb:
Du kannst die PID aber rausfinden. Z.B. in Powershell

Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "Prozess.exe 002" } | Select-Object ProcessId
Das klingt nach der Lösung für mich, vielen Dank!

Ich bin totaler Shell-noob daher muss ich nochmal nachhaken, sorry. ^^

Sollte der Command beim Ausführen nicht auch ein Ergebnis liefern?
Oder muss ich dafür noch etwas ergänzen?
Perfekt wäre die Ausgabe in eine Datei.

Bei meinem Versuch eben wollte ich die PID dieses Prozesses auslesen:
1747407115336.png


Versucht hab ich es mit folgenden Commands, aber beide liefern kein Ergebnis:
Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "Transfer.exe 100" } | Select-Object ProcessId
bzw.
Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "C:\X3000\Kasse\Transfer.exe 100" } | Select-Object ProcessId

1747408269925.png


Auch wenn ich das Ergebnis erst in eine Variable schreiben lasse und dann ausgebe, bekomme ich kein Ergebnis.

Nochmals danke
Ergänzung ()

madmax2010 schrieb:
oder beim start direkt die PID mitschreiben
Danke, aber diese Prozesse werden eig. vorrangig von anderen Programmen erstmalig gestartet,
somit fällt das flach.
Ergänzung ()

Hat sich erledigt...
es sind doch immer die Anführungszeichen ^^

Die Lösung:
Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '"C:\X3000\Kasse\Transfer.exe" 100' } | Select-Object ProcessId

Danke euch :)
 
Zuletzt bearbeitet:
Ist zwar schon gelöst.

Die aktuelle PID könnte man auch mit ner For herausfinden

for /f "TOKENS=1-4" %a in ('"tasklist | findstr Prozess.exe 001"') do (echo %b)
 
Zurück
Oben