Batch Syntaxfehler bei If else Befehl

Danjel4u

Cadet 1st Year
Registriert
Mai 2007
Beiträge
15
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?
 
Zeile 53 kommt mir seltsam vor. set "timelu=%%v"? Ich glaube, es wäre ohne Anführungszeichen richtig.
 
Entferne die leere Zeile 108 nach :: Wochenbackups rotieren
oder nutze für Kommentare rem statt ::
 
Zurück
Oben