Code:
@echo off
:: Pfad des Backups
set dir_backup=C:\sources
:: Pfad und Name des Monatsbackups
set dir_monat=F:\test\monat
set name_monat=monatbackupnr
:: Pfad und Name des Wochenbackups
set dir_woche=F:\test\woche
set name_woche=wochenbackupnr
:: Pfad des Logs
set file_log=F:\test\backup.log
set backup_l=F:\test\datum.log
set Datum=%date:~6,4%%date:~3,2%%date:~0,2%
:: Tag des Monatsbackups
set monatsbackup_am=01
:: Einstellungen für externe Tools
set params_move=/y
set exe_7z=C:\Programme\7-Zip\7z.exe
set params_7z=u
set extension_7z=7z
:: Backup Einstellungen festhalten
if not exist "%file_log%" (
echo ----------------------------- Backupeinstellungen ----------------------------- >> "%file_log%"
echo ^[%date% %time%^] Pfad des Backups: %dir_backup% >> "%file_log%"
echo ^[%date% %time%^] Pfad des Monatsbackups: %dir_monat% >> "%file_log%"
echo ^[%date% %time%^] Name des Monatsbackups: %name_monat% >> "%file_log%"
echo ^[%date% %time%^] Pfad des WochenBackups: %dir_woche% >> "%file_log%"
echo ^[%date% %time%^] Name des WochenBackups: %name_woche% >> "%file_log%"
echo ^[%date% %time%^] Monatsbackups immer rotieren vor dem %monatsbackup_am%. Monats >> "%file_log%"
echo ^[%date% %time%^] >> "%file_log%"
echo ^[%date% %time%^] Einstellungen für externe Tools: >> "%file_log%"
echo ^[%date% %time%^] >> "%file_log%"
echo ^[%date% %time%^] Parameter für move: %params_move% >> "%file_log%"
echo ^[%date% %time%^] >> "%file_log%"
echo ^[%date% %time%^] Pfad von 7-Zip: %exe_7z% >> "%file_log%"
echo ^[%date% %time%^] Parameter für 7-Zip: %params_7z% >> "%file_log%"
echo ^[%date% %time%^] Dateierweiterung der Backups: %extension_7z% >> "%file_log%"
echo -------------------------------------- Log ------------------------------------- >> "%file_log%"
)
:: aktuellen Tag ermitteln
set tag=%date%
for /f "tokens=1,2,3* delims=." %%i in ("%tag%") do set tag=%%i
:: Datum ermitteln vom letzten Backup
for /f "usebackq" %%v in ("%backup_l%") do set "timelu=%%v"
:: Backup abbrechen, falls Backupverzeichnis nicht existiert
if not exist "%dir_backup%" (
echo ^[%date% %time%^] Backupverzeichnis existiert nicht >> "%file_log%"
echo ^[%date% %time%^] Abbruch >> "%file_log%"
exit
)
:: Pfade erstellen falls nötig
if not exist "%dir_monat%" (
echo ^[%date% %time%^] Pfad des Monatsbackups erstellt >> "%file_log%"
mkdir "%dir_monat%"
)
if not exist "%dir_woche%" (
echo ^[%date% %time%^] Pfad des Wochenbackups erstellt >> "%file_log%"
mkdir "%dir_woche%"
)
set /a timen=%Datum% - 7
echo %timen%
echo %timelu%
if %timelu% LEQ %timen% (
:: wenn Tag des Monatsbackups erreicht
if %tag% LEQ %monatsbackup_am% (
echo Monatsbackup erreicht
pause
echo ^[%date% %time%^] Tag des Monatsbackups erreicht >> "%file_log%"
:: Wochenzahl zurücksetzen
set woche=0
:: restliche Monatsbackups rotieren
if exist "%dir_woche%\%name_woche%4.%extension_7z%" (
echo ^[%date% %time%^] Wochenbackup 4 zu Monatsbackup rotieren >> "%file_log%"
move %params_move% "%dir_woche%\%name_woche%4.%extension_7z%" "%dir_monat%\%name_monat%1.%extension_7z%" > nul
)
if exist "%dir_monat%\%name_monat%1.%extension_7z%" (
echo ^[%date% %time%^] Monatsbackup 1 rotieren >> "%file_log%"
move %params_move% "%dir_monat%\%name_monat%1.%extension_7z%" "%dir_monat%\%name_monat%2.%extension_7z%" > nul
)
if exist "%dir_monat%\%name_monat%2.%extension_7z%" (
echo ^[%date% %time%^] Monatsbackup 2 rotieren >> "%file_log%"
move %params_move% "%dir_monat%\%name_monat%2.%extension_7z%" "%dir_monat%\%name_monat%3.%extension_7z%" > nul
)
if exist "%dir_monat%\%name_monat%3.%extension_7z%" (
echo ^[%date% %time%^] Monatsbackup 3 rotieren >> "%file_log%"
move %params_move% "%dir_monat%\%name_monat%3.%extension_7z%" "%dir_monat%\%name_monat%4.%extension_7z%" > nul
)
)
:: Wochenbackups rotieren
if exist "%dir_woche%\%name_woche%3.%extension_7z%" (
echo ^[%date% %time%^] Wochenbackup 3 rotieren >> "%file_log%"
move %params_move% "%dir_woche%\%name_woche%3.%extension_7z%" "%dir_woche%\%name_woche%4.%extension_7z%" > nul
)
if exist "%dir_woche%\%name_woche%2.%extension_7z%" (
echo ^[%date% %time%^] Wochenbackup 2 rotieren >> "%file_log%"
move %params_move% "%dir_woche%\%name_woche%2.%extension_7z%" "%dir_woche%\%name_woche%3.%extension_7z%" > nul
)
if exist "%dir_woche%\%name_woche%_aktuell.%extension_7z%" (
echo ^[%date% %time%^] Wochenbackup 1 rotieren >> "%file_log%"
move %params_move% "%dir_woche%\%name_woche%_aktuell.%extension_7z%" "%dir_woche%\%name_woche%2.%extension_7z%" > nul
)
:: aktuelles Backup erzeugen
echo ^[%date% %time%^] aktuelles Backup erzeugen >> "%file_log%"
"%exe_7z%" "%params_7z%" "%dir_woche%\%name_woche%_aktuell.%extension_7z%" "%dir_backup%"
echo -------------------------------------------------------------------------------- >> "%file_log%"
echo Backup ist fertig! Bitte eine Taste druecken!
echo ^[%date% %time%^] Backup fertig!
if exist "%backup_time%" (
del "%backup_time%"
)
echo %datum% >> "%backup_time%"
:: letztes Monatsbackup löschen
if exist "%dir_monat%\%name_monat%4.%extension_7z%" (
echo ^[%date% %time%^] letztes Monatsbackup loeschen >> "%file_log%"
del "%dir_monat%\%name_monat%4.%extension_7z%" > nul
)
) else (
echo Backup wurde innerhalb von 7 Tagen schon erstellt.
echo Soll ein Backup erzwungen werden? Ja oder Nein eintippen.
set /P w=[j]a / [n]ein
echo %w%
)
bekome bei der if else anweisung den Syntaxfehler, kann mir da jemand helfen?