[bat] Starten von Programmen

sergey

Stammgast
Hey,
ich möchte gerne folgendes mit einer .bat Datei machen:

1. Feststellen ob ein Programm bereits läuft (z.B. Firefox)
2. Wenn ja -> nicht ausführen
Wenn nein -> ausführen

Dies sollte für mehrere Programme hintereinander möglich sein.

Kann mir wer da einen kleinen Denkanstoss geben, wie ich das am besten löse? Bin noch nicht so versiert in .bat Programmierung.

Gruss

sergey
 

Stromer92

Stammgast
Hey,
ich möchte gerne folgendes mit einer .bat Datei machen:

1. Feststellen ob ein Programm bereits läuft (z.B. Firefox)
2. Wenn ja -> nicht ausführen
Wenn nein -> ausführen

Dies sollte für mehrere Programme hintereinander möglich sein.

Kann mir wer da einen kleinen Denkanstoss geben, wie ich das am besten löse? Bin noch nicht so versiert in .bat Programmierung.

Gruss

sergey


Ich glaube, das geht nicht. Batch kann zwar sowhl eine Bedingung ausführen wie auch ein Programm starten, aber damit die IF-abfrage ausgeführt werden kann, muss das Batch feststellen, ob das Programm läuft und wie soll es das tun?
 

sergey

Stammgast
Es gibt die 'Funktion' tasklist.

Aber frag mich nicht was die macht (werd aber gleich rasch nachschauen) , ist eben momentan nicht wirklich befriedigend, die Lösung die ich hab.

Und in den Autostart möchte ich die Programme auch nicht legen, ist mir zu mühsam. (Und vor allem möchte ich die nicht gleich immer gestartet haben am anfang)

Gruss

sergey

[edit]So ich hab mal kurz nachgeforscht, mit tasklist /svc kann man die Liste aller laufenden Prozesse ausgeben. Ich hab irgendwo mal das: tasklist | findstr /i "D:/Firefox/firefox.exe" 1>NUL 2>&1 || "D:/Firefox/firefox.exe" gefunden. (Habs schon mal für mich angepasst, funktioniert aber nicht richtig) Soll ermitteln, ob der String D:/Firefox/firefox.exe in der Tasklist vorhanden ist, was ich aber gerade gesehen habe ist, dass nur der Taskname (also in diesem Fall firefox.exe) angegeben wird.[/edit]
 
Zuletzt bearbeitet:

froeschli

Stammgast
Code:
tasklist | findstr /i "D:/Firefox/firefox.exe" 1>NUL 2>&1 || "D:/Firefox/firefox.exe"

Den teil bis und mit 1>NUL verstehe ich noch.... aber warum 2>?? Kanal 2 ist doch die Fehlerausgabe?? IMO wird beim Befehl findstr aber kein Fehler generiert... Kann mich hier mal einer aufklären??

Gruss froeschli
 

pagefault

Inaktiv
Code:
tasklist | findstr /i "D:/Firefox/firefox.exe" 1>NUL 2>&1 || "D:/Firefox/firefox.exe"

Den teil bis und mit 1>NUL verstehe ich noch.... aber warum 2>?? Kanal 2 ist doch die Fehlerausgabe??

Die Zeichenfolge 2>&1 bei der Ausgabeumleitung bedeutet, dass beide Kanäle zusammen gefasst werden sollen (also sowohl stdout und stderr ins NUL Device umgeleitet werden).

@sergey: Für mich funktioniert das hier prima:
Code:
tasklist | find /i "firefox.exe" || "c:\programme\mozilla firefox\firefox.exe"
 

froeschli

Stammgast
A

abu

Guest
Kanal 2 ist doch die Fehlerausgabe?? IMO wird beim Befehl findstr aber kein Fehler generiert...

IIRC schreiben einige diese Commandline-Tools wie findstr ihre Ausgabe auf stderr und ev. nur ein Intro auf stdout. Wenn man die Ausgabe weitergeben will, muss man die beiden Kanäle vereinen.
 

sergey

Stammgast
Funktioniert tip top.
Er hängt nur ein wenig nach einem Programm, aber auch das bringen wir noch hin. :)

Gruss

sergey

[edit]Jetzt ist es so wie ich es gerne hätte. Danke für die Hilfe.[/edit]
 
Zuletzt bearbeitet:
Oben