Wie kann man eine Funktion in einem Batch-Skript ein Mal pro Monat ausführen? Zum Beispiel für eine separate Monatssicherung.
Ein einfacher Weg ist den aktuellen Monat in eine Textdatei zu schreiben. Und vor jedem weiteren Ausführen der Funktion im Skript zu prüfen, ob der aktuelle Monat dem der letzten Ausführung entspricht. Wenn nicht, dann führe die Funktion aus. Wenn ja, beende den Vorgang.
Ein Beispiel-Skript könnte so aussehen:
@echo off
rem Quelle, Ziel, monattxt festlegen
set "Quelle=C:\Quelle"
set "Ziel=C:\Ziel\Monatssicherung"
set "monattxt=%Ziel%\monat.txt"
rem Speichere den aktuellen Monat als Variable, z.B. 10 als Oktober
for /f "tokens=2 delims==" %%x in ('wmic os get LocalDateTime /format:value') do set "dt=%%x"
set "monat=%dt:~4,2%"
rem lese den letzten Monat aus der monattxt aus und speichere den Wert als Variable "letzter_monat"
SET /P letzter_monat=<"%monattxt%"
rem Prüfe, ob der aktuelle Monat dem der letzten Ausführung entspricht
if %monat%==%letzter_monat% goto end
[sonstiger Code]
rem Schreibe den aktuellen Monat in die monattxt
echo %monat% > "%monattxt%"
:end
exit
Ich wünsche Dir viel Erfolg damit!
Stay blogged. 😎
Dein Matthias Düsi