svenni72
Goto Top

Brauche Batch Datei die alle 15 Minuten überprüft ob eine .exe gestartet ist und falls nein diese startet

Hallo wer weiss rat ?

Ich habe eine *.exe die immer laufen muss.
Leider bricht diese öfters ab ohne Grund und Fehlermeldung.
Ich kann zwar mit start *.exe und über den Task planer zu bestimmten Zeiten die exe starten und beenden aber schöner wäre es, wenn automatisch alle 15 Minuten überprüft wird, ob der Task / Die exe noch läuft und falls nein ein automatischer start veranlasst wird.

so wie zb.

if
then
else
then

Wäre über Tips sehr dankbar.

Content-ID: 100498

Url: https://administrator.de/contentid/100498

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

SteinBeiser
SteinBeiser 29.10.2008 um 11:49:14 Uhr
Goto Top
pslist aus der SysinternalsSuite von MS

z.B.
pslist firefox
wenn errorlevel 0 prog läuft ansonsten prog nicht da.
svenni72
svenni72 29.10.2008 um 13:29:29 Uhr
Goto Top
Danke für die Antwort!

Damit bekomme ich aber doch nur die prozess Informationen usw. und kann die .exe nicht automatisch starten?
oder gibt es da einen Schalter den ich übersehen habe?
bastla
bastla 29.10.2008 um 13:36:55 Uhr
Goto Top
Hallo svenni72!

Damit bekomme ich aber doch nur die prozess Informationen usw. und kann die .exe nicht automatisch starten?
Na dann einfach:
pslist DeinProgramm>nul 2>nul || "C:\Programme\Dein Prog\DeinProgramm.exe"
Alternativ dazu mit Errorlevel:
pslist DeinProgramm>nul 2>nul
if errorlevel 1 "C:\Programme\Dein Prog\DeinProgramm.exe"
Grüße
bastla
svenni72
svenni72 29.10.2008 um 13:52:00 Uhr
Goto Top
Super das hat schon mal geklappt das die .exe gestartet wird wenn sie nicht läuft - vielen Dank
Wie mache ich es jetzt am Besten, dass alle 15 Minuten die batch läuft ?
bastla
bastla 29.10.2008 um 14:03:17 Uhr
Goto Top
Hallo svenni72!

Entweder einen "Geplanten Task" einrichten oder den Batch im Hintergrund in einer Endlosschleife weiterlaufen lassen und mit "sleep.exe" aus den Windows Server 2003 Resource Kit Tools eine entsprechende Pause einfügen, also etwa:
@echo off & setlocal
:Loop
pslist DeinProgramm>nul 2>nul || "C:\Programme\Dein Prog\DeinProgramm.exe"  
sleep 900
goto :Loop
Grüße
bastla
svenni72
svenni72 29.10.2008 um 15:49:42 Uhr
Goto Top
Hallo Bastla!!

vielen vielen Dank hat geklappt und ich werde das jetzt mal "beobachten"
Ich habe erstmal die Schleife genommen und den Errorlevel eingebaut.
Mal abwarten ob es sich auf Dauer bewährt.

Vielen Dank
bastla
bastla 29.10.2008 um 16:02:39 Uhr
Goto Top
Hallo svenni72!

Srichwort "beobachten": Du könntest den jeweiligen Neustart auch protokollieren:
pslist DeinProgramm>nul 2>nul || ("C:\Programme\Dein Prog\DeinProgramm.exe" & >>"D:\Neustartprotokoll.txt" echo Neustart am %date% um %time:~,8%)
Grüße
bastla