Warten auf Uhrzeit in Batchdatei
Hallo,
ich habe folgendes Problem:
Eine Batchdatei ruft in jeder Nacht mehrere Programme für Datensicherung, Datenimport und Berichtsversand auf. Bei einem Kunden gibt es das Problem, dass dort immer um 4:00 Uhr der Mailserver rebootet wird, und der Mailversand genau in den Zeitraum fällt, in dem der Server nicht verfügbar ist.
Gibt es eine Möglichkeit in der Batchdatei mit der Ausführung eines Befehls zu warten, bis eine bestimmte Uhrzeit erreicht ist?
Danke!
Gruß, Andreas
ich habe folgendes Problem:
Eine Batchdatei ruft in jeder Nacht mehrere Programme für Datensicherung, Datenimport und Berichtsversand auf. Bei einem Kunden gibt es das Problem, dass dort immer um 4:00 Uhr der Mailserver rebootet wird, und der Mailversand genau in den Zeitraum fällt, in dem der Server nicht verfügbar ist.
Gibt es eine Möglichkeit in der Batchdatei mit der Ausführung eines Befehls zu warten, bis eine bestimmte Uhrzeit erreicht ist?
Danke!
Gruß, Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 242190
Url: https://administrator.de/contentid/242190
Ausgedruckt am: 18.12.2024 um 05:12 Uhr
11 Kommentare
Neuester Kommentar
Weil ich nicht nachvollziehen kann warum man das überhaupt in diese Situation bringt, dass es dort eine Überschneidung mit einem Restart gibt - warum auch immer ein Mailserver offenbar täglich neugestartet wird...
Dann würde ich den Dateiimport ne Stunde eher ansetzen... Mit Batches gibt es jedenfalls keine Möglichkeit bis xx Uhr zu warten.
Dann würde ich den Dateiimport ne Stunde eher ansetzen... Mit Batches gibt es jedenfalls keine Möglichkeit bis xx Uhr zu warten.
Was du machen kannst: Da ich dein Skript nicht kenne musst du sehen wie und wo du das evtl. einbauen kannst:
Ist nur ein Beispiel. Da kannst du dir entsprechend die if-anweisung bearbeiten. Du könntest also prüfen, ob die Stunde <4 ist und die Minute kleiner 15 und erst dann geht die Mail raus.
Ein explizites Warten gibts nicht - daher musst du ein Workaround machen.
Gruß
@echo off
set hour=3
set minute=55
:loop
for /f "tokens=1,2,3,4 delims=:,. " %%i in ("%time%") do (
set hr=%%i
set mn=%%j
)
ping 127.0.0.1 -n 5
if %hr% == %hour% (
if %mn% == %minute% (
GOTO SchickNix
) else (
GOTO loop)
)
:SchickNix
echo Du kommst hier net raus
Ist nur ein Beispiel. Da kannst du dir entsprechend die if-anweisung bearbeiten. Du könntest also prüfen, ob die Stunde <4 ist und die Minute kleiner 15 und erst dann geht die Mail raus.
Ein explizites Warten gibts nicht - daher musst du ein Workaround machen.
Gruß
Hallo @andikad,
Andreas
[...] immer um 4:00 Uhr der Mailserver rebootet wird
Klingt unnötig.und der Mailversand genau in den Zeitraum fällt, in dem der Server nicht verfügbar ist.
Gibt es eine Möglichkeit in der Batchdatei mit der Ausführung eines Befehls zu warten, bis eine bestimmte Uhrzeit
erreicht ist?
klar, den Task Sheduler.Gibt es eine Möglichkeit in der Batchdatei mit der Ausführung eines Befehls zu warten, bis eine bestimmte Uhrzeit
erreicht ist?
Gruß, Andreas
Gruß,Andreas
Moin,
Mit robocopy lässt sich auf eine bestimmte Zeit warten und auch eine Zeitspanne als auslass-Zeit überbrücken.
Wenn nichts zu warten ist wird durchgerannt.
Gruß Phil
Mit robocopy lässt sich auf eine bestimmte Zeit warten und auch eine Zeitspanne als auslass-Zeit überbrücken.
Wenn nichts zu warten ist wird durchgerannt.
@echo off
echo Starte Programm um %time%
rem Pausiere Programmablauf wenn 04:00 Uhr bis 04:05 Uhr
rem Mindestens zwei Minuten Überbrücken /RH:Ende-Beginn
rem Eine Minute vom Beginn abziehen
setlocal
set Beginn=0359
set Ende=0405
:: /RH:%Ende%-%Beginn%
set "RC=%temp%\RCtmp.log"
type nul >"%RC%"
robocopy . . " Zeitfenster ." /RH:%Ende%-%Beginn% /L /W:1 /R:1 /nFL /nDL /njH /njS /tee /Log:"%RC%" |(
for /f "tokens=1*" %%a in ('find "..." ^^^<"%RC%" ') do @(
echo Zeit fuer eine Pause %time%
>&3 Zeit fuer eine Pause %time%
echo Programm wird %%b
>&3 echo Programm wird %%b
) >> D:\Log.txt
)
del "%RC%"
rem Weiter mit dem rest
Gruß Phil