Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Script zur Überprüfung ob Programm läuft und falls nicht starten
Hallo ich habe einen Backup Client der öfters mal abschmiert.
Hat jemand von euch eine Idee wie ein Script aussehen würde, dass ich gerne alle 6 Stunden Laufen lassen würde und Überprüft ob das Programm läuft und falls es nicht läuft das Programm startet.
@echo off
:ANFANG
ping 127.0.0.1 -n 21600
tasklist /FI "IMAGENAME eq notepad.exe" 2>NUL | find /I /N "notepad.exe" >NUL
REM AN
if "%ERRORLEVEL%"=="0" REM echo "AN"
REM AUS
if "%ERRORLEVEL%"=="1" START notepad
GOTO ANFANG
Prüft ob alle 6 Stunden (1 Ping = 1 Sekunde; 6 Stunden = (60 ping x 60 Minuten x 6 Stunden) ob die notepad.exe gestartet ist. Falls nicht => wird diese gestartet & das Skript springt wieder auf Anfang
Oder
Die Zeilen :Anfang, goto Anfang, ping 127.0.0.1 -n 21600 entfernen & die Batch als Windowstask regelmäßig geplant starten lassen.
//EDIT:
und das ganze mit autoit (beim Sleep-Befehl wird mit Millisekunden gerechnet):
Code:
while 1
sleep(21600000)
If ProcessExists("notepad.exe") Then
;AN
Else
;AUS
Run("notepad.exe")
EndIf
WEnd
Falls als Task geplant : While 1, Wend, sleep(21600000) entfernen
Ich würde das als Task planen und nicht als Dauerschleife laufen lassen. Wenn die Batch aus irgendeinem Grund mal aussteigt, bekommt man das nicht mit und dann ist Pustekuchen. Als Task ist das hinfällig, weil die Batch dann jeweils nur genau einmal getriggert wird und durchläuft.
Vielen vielen Dank du euch beiden. Okay dann werde ich das ganze doch planen. Wie müsste das Script denn dann aussehen? Einfach die -n rausnehmen? Und wisst ihr nen gutes Programm mit dem man sowas plant oder einfach mit cronjob?
Danke nochmal für die tollen schnellen Antworten.
cron ist Linux, Task Planer und Batch sind Windows. Normalerweise geht man davon aus, dass ohne nähere Angaben von Windows die Rede ist. Da du nun mit cron anfängst, muss man sich aber fragen ob du nicht doch Linux meinst. Wenn ja, müsste das obige Skript stattdessen mit bash, o.ä. geschrieben werden.
Alles klar danke.
Muss ich dann aus dem obigen Script noch was rausnehmen, da das jetzt ja gerade so geschrieben ist, dass es ständig läuft und pingt und nicht wie du meintest einmalig.
Lg
@ECHO OFF
SET exepath=c:\programme\bla
SET executable=bla.exe
SET params=-a -bc -d 123
SET logfile=c:\log.txt
tasklist /FI "IMAGENAME eq %executable%" 2>NUL | find /I /N "%executable%" >NUL
IF "%ERRORLEVEL%"=="0" (
ECHO "%date% %time% SCHON AN" >> %logfile%
)
IF "%ERRORLEVEL%"=="1" (
ECHO "%date% %time% WIRD GESTARTET" >> %logfile%
START %exepath%\%executable% %params%
)
Einfach die 4 Variablen am Anfang anpassen Wenn die Anwendung keine Parameter zum Start braucht, kannst du die Variable einfach mit params= leerlassen.
Das kommt darauf an was du denn starten willst. Im Beispiel aus #2 wurde ja lediglich auf notepad.exe geprüft und im Falle eines Falles eben notepad gestartet. Da sowas mit notepad natürlich wenig sinnvoll ist, wirst du sicher etwas anderes starten wollen und das braucht gegebenenfalls Startparameter. Nehmen wir mal als Beispiel ein Backup. Das Backup stößt man ja nicht mit "backup.exe" an, sondern sinngemäß mit "backup.exe quelle ziel".
Aus
SET exepath=c:\programme\bla
SET executable=bla.exe
SET params=-a -bc -d 123
[..]
START %exepath%\%executable%%params%
wird zur Laufzeit dann
START c:\programme\bla\bla.exe-a -bc -d 123
Inwiefern das bei deiner Anwendung notwendig ist, musst du selbst wissen. Wenn es keine Parameter gibt, dann lässt man die Zeile mit params einfach so:
SET params=
Nu ist die Variable leer und wird vom START-Kommando einfach ignoriert.
Alles klar danke.
Es ist tatsächlich ein Backup.
Jedoch wird ein Backup Client ausgeführt, Synology active Business. Ich gehe davon aus dass dieser keine Parameter benötigt. Ich Probier es einfach mal aus.
Vielen vielen Dank euch beiden. Habt mir sehr weitergeholfen!!