Wie benutzt man in Batch die Tasklist?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Tasklist liefert Dir eine Ausgabe und führt sonst keine Befehle aus (anders als zB bei pause) Was hat es also für einen Sinn, diese Ausgabe ins nichts (nul) zu schreiben?

Ich schätze mal du willst checken ob new1.bat läuft, leider sind in tasklist nur die Prozesse (bei einem batch Programm cmd.exe) aufgeführt.

Man kann aber mithilfe eines Filters (/FI) die Titel der Fenster (WINDOWTITLE) überprüfen (eq) und schauen ob eine Fehlermeldung ausgegeben wird. (Diese wird mithilfe der Pipe | dem findstr Befehl übergeben.) in der Variable %title% ist der Titelname des Programms enthalten:

tasklist /FI "WINDOWTITLE eq %title%*" | findstr /c:"INFORMATION: Es werden keine Aufgaben mit den angegebenen Kriterien ausgeführt." && echo Fehler. Kein Prozess mit dem Namen %title%  && goto end

Den Taskkill kann man dann mit den gleichen Filtern ausführen, zusätzlich wird noch "geprüft" ob das Fenster auch von cmd.exe ausgeführt wird (/IM):

taskkill /FI "WINDOWTITLE eq %title%*" /IM cmd.exe >nul

Das zu beendende Programm muss natürlich den Titel haben, der auch in der Variable des anderen Programms ist:

title BeispielTitel

Und dann das eigentliche Programm nochmal ganz:

@echo off
color f0
set "title=BeispielTitel"

tasklist /FI "WINDOWTITLE eq %title%*" | findstr /c:"INFORMATION: Es werden keine Aufgaben mit den angegebenen Kriterien ausgeführt." && echo Fehler. Kein Prozess mit dem Namen %title% && goto end
taskkill /FI "WINDOWTITLE eq %title%*" /IM cmd.exe >nul
echo taskkill erfolgreich.


:end
pause >nul exit /b

LG Tim


MichaelatBatch 
Fragesteller
 12.05.2017, 18:08

Danke Tim ,

wieder ein mal hat mir deine Antwort sehr weitergeholfen.

1

Ich verstehe nicht ganz wofür du das brauchst aber du könntest den prozess doch einfach so killen und jegliche ausgabe deaktivieren.

taskkill /IM new1.bat /f 2>nul
Woher ich das weiß:Studium / Ausbildung – abgeschlossene Ausbildung zum IT-Techniker

timlg07  15.05.2017, 14:07

/IM new1.bat

macht keinen Sinn weil nicht der Dateiname new1.bat der Abbildname ist sondern cmd.exe

0