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-Key: 100498

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

Printed on: April 27, 2024 at 02:04 o'clock

Member: SteinBeiser
SteinBeiser Oct 29, 2008 at 10:49:14 (UTC)
Goto Top
pslist aus der SysinternalsSuite von MS

z.B.
pslist firefox
wenn errorlevel 0 prog läuft ansonsten prog nicht da.
Member: svenni72
svenni72 Oct 29, 2008 at 12:29:29 (UTC)
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?
Member: bastla
bastla Oct 29, 2008 at 12:36:55 (UTC)
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
Member: svenni72
svenni72 Oct 29, 2008 at 12:52:00 (UTC)
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 ?
Member: bastla
bastla Oct 29, 2008 at 13:03:17 (UTC)
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
Member: svenni72
svenni72 Oct 29, 2008 at 14:49:42 (UTC)
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
Member: bastla
bastla Oct 29, 2008 at 15:02:39 (UTC)
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