Mal ausprobieren

Batch-File: Programm nur starten, falls es noch nicht läuft

von - 18.10.2022
Screenshot einer Eingabeaufforderung
Foto: PCtipp.ch
Sie möchten unter Windows ein Programm nur starten, falls jenes noch nicht läuft. Das klappt mit einer einfachen Batch-Datei. Vielleicht brauchen Sie das ja mal!
Besonders, wer mit vielen Fenstern arbeitet, vielleicht sogar auf mehreren Bildschirmen, kann auch mal die Übersicht darüber verlieren, welche Programme schon laufen und welche nicht.
So möchten Sie vielleicht via Batch-Datei einen Programmstart anstossen, aber nur, sofern dieses Programm noch nicht läuft.

Zunächst die Kurzfassung

Angenommen, es geht um Firefox, pflanzen Sie diesen Befehl in Ihre Batchdatei:
tasklist | find /i "firefox.exe" || "C:\Program Files\Mozilla Firefox\firefox.exe"
Die einfache Befehlszeile in der Batch-Datei, geöffnet in Notepad
Die einfache Batch-Datei startet z. B. Firefox nur, sofern er noch nicht läuft
(Quelle: PCtipp.ch )

Erklärung

Hierfür verwenden Sie das Bordwerkzeug namens tasklist. Sie machen sich zunutze, dass ein gestartetes Programm stets auch einen Windows-Prozess belegt, welcher den Namen der ausführbaren Datei trägt. Um es auszuprobieren, starten Sie eine Eingabeaufforderung. Tippen Sie den Befehl tasklist ein und drücken Sie Enter. Sofort listet es im Konsolenfenster sämtliche Tasks auf. In der Spalte «Abbildname» sehen Sie die Namen der Tasks.
Eingabeaufforderung zeigt die Liste der Tasks
Der Befehl tasklist zeigt eine lange Liste der aktiven Programme
(Quelle: PCtipp.ch )
Mit dem Zusatz find /i "firefox.exe" finden Sie alle Tasks des Programms firefox.exe. Geben Sie daher einmal dies ein, gefolgt von Enter: tasklist | find /i "firefox.exe"
Wenn Firefox läuft, listet dies alle Firefox-Tasks auf. Die senkrechten Striche | sind sogenannte Pipes, die dem Verketten bzw. der Datenübergabe dienen. Ein einzelner übergibt die Ausgabe des vorherigen Befehls an den nachfolgenden Befehl. Zwei || bewirken, dass der nachfolgende Befehl nur ausgeführt wird, wenn der vorherige fehlschlägt.
Würden Sie nur "C:\Program Files\Mozilla Firefox\firefox.exe" in die Eingabeaufforderung schreiben, würde dies Firefox auf jeden Fall starten. Es würde sich damit ein neues Firefox-Fenster öffnen, falls er schon liefe. Mit dem Suchen nach vorhandenen firefox.exe-Tasks und der doppelten Pipe || startet das Programm hingegen nur, wenn es unter den laufenden Tasks nicht gefunden wurde. Und so kommt dieser Befehl zustande:
tasklist | find /i "firefox.exe" || "C:\Program Files\Mozilla Firefox\firefox.exe"
Das ist ein schon älteres Fundstück aus dem PCtipp-Forum, funktioniert aber immer noch, sogar unter Windows 11. (PCtipp-Forum)
Verwandte Themen