Batch/vbs: Wie kann man eine if-Bedingung mit Dateieinschaltung verbinden?

...komplette Frage anzeigen

2 Antworten

Das geht gar nicht mit IF, dazu musst du die Prozesse überprüfen:

tasklist /NH /FI "imagename eq [Prozess.exe]" | findstr /i /C:"[Prozess.exe]" >nul 2>nul || start Datei

Der TASKLIST-Befehl listet alle gestarteten Prozesse auf. "/NH" steht für "No Header", wodurch die Überschriften weggelassen werden. Auf /FI folgt ein Filter, "eq" bedeutet "equals". Es werden also alle gestarteten Prozesse namens "Prozess.exe" aufgelistet.

Mit Hilfe von " | " bezieht sich der Folgebefehl auf den Output des vorigen Befehls. FINDSTR sucht also "Prozess.exe" in dem Output des TASKLIST-Befehls. "/i" ignoriert Groß- und Kleinschreibung. "/C:" sucht nach der folgenden Zeichenfolge auch mit Punkt (ohne /C würde er nach "Prozess" und nach "exe" suchen).

">nul 2>nul" unterdrücken die Ausgabe des FINDSTR-Befehls. Die brauchen wir nicht, wir wollen nur wissen, ob der Befehl was gefunden hat oder nicht.

Mit " || " wird der folgende Befehl nur ausgeführt, wenn der vorangegangene erfolglos war. Das Gegenstück dazu ist "&&".

Das ganze funktioniert nur bei Dateien, die als Prozess ausgeführt werden. Batchdateien hingegen werden über CMD.EXE ausgeführt. Um zu prüfen, ob eine bestimmte Batchdatei geöffnet ist, musst du wissen, welchen Titel das CMD-Fenster mit der Batchdatei hat:

tasklist /NH /FI "imagename eq cmd.exe" /FI "windowtitle eq [Fenstertitel]" | findstr /i /C:"cmd.exe" >nul 2>nul || start Datei

Damit das funktioniert, musst du den genauen Fenstertitel wissen, nicht nur einen Teil davon. Suchst du z. B. nach "Fenster" im Fenstertitel, während der Titel eigentlich "Fenster 1" ist, findet CMD es nicht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Firas2
17.07.2016, 18:54

ich glaube ich mache etwas falsch. Wenn ich an der stelle || eingebe, wird das Programm die ganze Zeit neu geöffnet. Wenn ich && eingebe, dann kommt mir die ganze Zeit eine Fehleranzeige.

0

Ja, genau so wie du es geschrieben hast

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Firas2
15.07.2016, 23:54

verstehe ich nicht... ich meine also Dateipfad eingeben, dann welches Wort? Oder wie?

0

Was möchtest Du wissen?