Batch an einem bestimmten Tag im Monat ausführen
Hallo zusammen,
Microsoft verteilt wie bekannt monatliche Updates (Patchday)
Bei uns werden diese nach Überprüfung auf TestServern am folgenden Sonntag nach dem zweiten Dienstag im Monat eingespielt (per WSUS).
Mein Ziel ist es, vor dieser Einspielung und dem danach folgenden Neustart bestimmte Dienste zu beenden.
Mittels dem AT-Befehl könnte ich jeden Tag eine Batch starten, die abfragt ob denn jetzt "ein Sonntag nach dem zweiten Dienstag im Monat ist" und dann vor der WSUS-Einspielung die entsprechenden Dienste beendet - doch wie stelle ich das fest, ob es dieser bestimmte Sonntag ist?
Würde mich über Anregungen und Beispiele sehr freuen.
Grüße an alle.
Microsoft verteilt wie bekannt monatliche Updates (Patchday)
Bei uns werden diese nach Überprüfung auf TestServern am folgenden Sonntag nach dem zweiten Dienstag im Monat eingespielt (per WSUS).
Mein Ziel ist es, vor dieser Einspielung und dem danach folgenden Neustart bestimmte Dienste zu beenden.
Mittels dem AT-Befehl könnte ich jeden Tag eine Batch starten, die abfragt ob denn jetzt "ein Sonntag nach dem zweiten Dienstag im Monat ist" und dann vor der WSUS-Einspielung die entsprechenden Dienste beendet - doch wie stelle ich das fest, ob es dieser bestimmte Sonntag ist?
Würde mich über Anregungen und Beispiele sehr freuen.
Grüße an alle.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 107643
Url: https://administrator.de/forum/batch-an-einem-bestimmten-tag-im-monat-ausfuehren-107643.html
Ausgedruckt am: 23.04.2025 um 13:04 Uhr
12 Kommentare
Neuester Kommentar

über geplante tasks kannst du doch einrichten, dass die batch jeden 3 sonntag im monat (oder wann auch immer) einmal gestartet werden soll..
Hallo redolog und willkommen im Forum!
Da der in Frage kommende Sonntag zwischen dem 13. und 19. eines Monats liegen muss, ließe sich das in einem Batch etwa so kontrollieren:
Grüße
bastla
[Edit] @miniversum: Zweifellos eleganter ...
[/Edit]
Da der in Frage kommende Sonntag zwischen dem 13. und 19. eines Monats liegen muss, ließe sich das in einem Batch etwa so kontrollieren:
@echo off & setlocal
set /a Tag=%date:~-10,2%
if %Tag% lss 13 goto :eof
if %Tag% gtr 19 goto :eof
set G=%temp%\GetWeekDay.vbs
>>%G% echo WScript.Echo WeekDayName(WeekDay(WScript.Arguments(0)),True)
for /f %%i in ('cscript //nologo %G% %date%') do set "WTag=%%i"
if /i "%WTag%" neq "So" goto :eof
echo Updates installieren ...
bastla
[Edit] @miniversum: Zweifellos eleganter ...
Hey,
hätte nochmals ne kleine Frage bei der ich unterstützung bräuchte.
Habe die SuFu benutzt und bin auf diesen Thread hier gestossen da ich etwas ähnliches durchführen möchte.
ich brauche ein skript innerhalb einer Batch welches vorm ausführen einer weiteren batch prüft wie spät es aktuell ist ( systemzeit %time% am besten ? )
Die Prüfung soll verhindern das täglich ( egal welcher Tag ) z.b. ab 22 Uhr bis 8 Uhr morgens die nachfolgende Batch datei nicht gestartet wird !
Also sinngemäß so:
Batch läuft...
bei bestimmter Aktion kommt Abfrage ob es zwischen 22 Uhr und 8 Uhr ist
Falls JA dann goto ende
Falls NEiN goto start und dann wird halt die Batch gestartet ....
Habe nun mit dem obigen Quelltext schon ein wenig rumprobiert doch ich bekomm es nicht so recht hin
bei %time% kommt ja z.B. 22:43:22,44 raus ... wie frage ich das am besten ab ?
Bin für jeden Tipp sehr dankbar !
Mfg Beatzler
hätte nochmals ne kleine Frage bei der ich unterstützung bräuchte.
Habe die SuFu benutzt und bin auf diesen Thread hier gestossen da ich etwas ähnliches durchführen möchte.
ich brauche ein skript innerhalb einer Batch welches vorm ausführen einer weiteren batch prüft wie spät es aktuell ist ( systemzeit %time% am besten ? )
Die Prüfung soll verhindern das täglich ( egal welcher Tag ) z.b. ab 22 Uhr bis 8 Uhr morgens die nachfolgende Batch datei nicht gestartet wird !
Also sinngemäß so:
Batch läuft...
bei bestimmter Aktion kommt Abfrage ob es zwischen 22 Uhr und 8 Uhr ist
Falls JA dann goto ende
Falls NEiN goto start und dann wird halt die Batch gestartet ....
Habe nun mit dem obigen Quelltext schon ein wenig rumprobiert doch ich bekomm es nicht so recht hin
Bin für jeden Tipp sehr dankbar !
Mfg Beatzler
@miniversum
Wenn es ohnehin eine Zahl werden soll, stört das Leerzeichen vor einstelligen Stundenzahlen gar nicht und es genügt
Grüße
bastla
Wenn es ohnehin eine Zahl werden soll, stört das Leerzeichen vor einstelligen Stundenzahlen gar nicht und es genügt
set /a Stunde=%time:~,2%
bastla
Hey,
super
Vielen Dank funktioniert auch allerbest, so wie gewünscht!
Aber könntet ihr mir ggf. das ganze mal erläutern ? Ist soweit alles klar nur zeile 03 versteh ich nicht so ganz ..
set /a Stunde=%time:~,2%
wird hier die zweite stelle aus dem %time% befehl abgefragt? also z.B. 23:45:43,23 dann würde bei dieser Zeit die 3 von der 23 ausgewertet werden ??? wofür steht das ~, ?
Vielen Dank !
super
Aber könntet ihr mir ggf. das ganze mal erläutern ? Ist soweit alles klar nur zeile 03 versteh ich nicht so ganz ..
set /a Stunde=%time:~,2%
wird hier die zweite stelle aus dem %time% befehl abgefragt? also z.B. 23:45:43,23 dann würde bei dieser Zeit die 3 von der 23 ausgewertet werden ??? wofür steht das ~, ?
Vielen Dank !
Hallo beatzler!
Vorweg: Mit "set /?" kannst Du die Details in der Onlinehilfe nachlesen ...
Grüße
bastla
Vorweg: Mit "set /?" kannst Du die Details in der Onlinehilfe nachlesen ...
set /a Stunde=%time:~,2%
wird hier die zweite stelle aus dem %time% befehl abgefragt?
Es werden die ersten beiden Stellen (vor dem Komma steht kein Offset, es werden also keine Stellen übersprungen) der Uhrzeit als numerischer Wert in der Variablen %Stunde% gespeichert.wird hier die zweite stelle aus dem %time% befehl abgefragt?
Grüße
bastla