Fehler bei for (in einem CMD Skipt)
Hallo zusammen,
ich muss eine Tägliche Sicherung von einem Verzeichnis auf deinem Server Erstellen.
Dazu erstelle ich mit Robocopy eine Sicherung in ein Verzeichnis mit Tagesdatum. Nach 3 Tagen soll das älteste Verzeichnis gelöscht werden.
Diese Skip habe ich erstellt:
@echo on
rem ######################################### Anfang Konfiguration
REM Testverzeichnis
set quelle=C:\Temp
set ziel=w:\Backup\test1
REM #### Anzahl der BACKUPs die aufgehoben werden. ####
set anzahlBackups=3
rem ######################################### Ende Konfiguration
if exist "%ziel%\%date%" exit
echo Backup startet... %ziel%\%date%
if not exist "%quelle%" (
ECHO "ERROR: Quelle exsistiert nicht"
exit
)
if not exist "%ziel%\%date%" md "%ziel%\%date%"
for /F "tokens=2 delims=." %%i in ("%date%") DO (set month=%%i)
for /F "tokens=3 delims=." %%i in ("%date%") DO (set jear=%%i)
title BackUp ist gestartet
if not exist "%ziel%\%date%\*.%month%.%jear%" (
Echo Erstelle vollstandiges Backup fur diesen Monat
robocopy "%quelle%" "%ziel%\%date%" /MIR /tee /log:"%ziel%\%date%\BackUp_%date%.log"
) else (
echo Aktualisiere das Backup von diesem Monat
move "%ziel%\%date%\*.%month%.%jear%" "%ziel%\%date%" > NUL
if not exist "%ziel%\BackUp_%date%.log" echo %date% > "%ziel%\BackUp_%date%.log"
robocopy "%quelle%" "%ziel%\%date%" /MIR /tee /log+:"%ziel%\BackUp_%date%.log"
)
echo Losche alte BackUps
:ende
for /f "skip=%anzahlBackups% delims=" %F% in ('dir /B /O-D /A:D %ziel%') do rd /s /q "%ziel%\%F%"
exit
Das Sichern funktioniert einwandfrei aber leider nicht das löschen des Verzeichnis.
Was mache ich hier falsch?
VG
Thilo
ich muss eine Tägliche Sicherung von einem Verzeichnis auf deinem Server Erstellen.
Dazu erstelle ich mit Robocopy eine Sicherung in ein Verzeichnis mit Tagesdatum. Nach 3 Tagen soll das älteste Verzeichnis gelöscht werden.
Diese Skip habe ich erstellt:
@echo on
rem ######################################### Anfang Konfiguration
REM Testverzeichnis
set quelle=C:\Temp
set ziel=w:\Backup\test1
REM #### Anzahl der BACKUPs die aufgehoben werden. ####
set anzahlBackups=3
rem ######################################### Ende Konfiguration
if exist "%ziel%\%date%" exit
echo Backup startet... %ziel%\%date%
if not exist "%quelle%" (
ECHO "ERROR: Quelle exsistiert nicht"
exit
)
if not exist "%ziel%\%date%" md "%ziel%\%date%"
for /F "tokens=2 delims=." %%i in ("%date%") DO (set month=%%i)
for /F "tokens=3 delims=." %%i in ("%date%") DO (set jear=%%i)
title BackUp ist gestartet
if not exist "%ziel%\%date%\*.%month%.%jear%" (
Echo Erstelle vollstandiges Backup fur diesen Monat
robocopy "%quelle%" "%ziel%\%date%" /MIR /tee /log:"%ziel%\%date%\BackUp_%date%.log"
) else (
echo Aktualisiere das Backup von diesem Monat
move "%ziel%\%date%\*.%month%.%jear%" "%ziel%\%date%" > NUL
if not exist "%ziel%\BackUp_%date%.log" echo %date% > "%ziel%\BackUp_%date%.log"
robocopy "%quelle%" "%ziel%\%date%" /MIR /tee /log+:"%ziel%\BackUp_%date%.log"
)
echo Losche alte BackUps
:ende
for /f "skip=%anzahlBackups% delims=" %F% in ('dir /B /O-D /A:D %ziel%') do rd /s /q "%ziel%\%F%"
exit
Das Sichern funktioniert einwandfrei aber leider nicht das löschen des Verzeichnis.
Was mache ich hier falsch?
VG
Thilo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2085079035
Url: https://administrator.de/contentid/2085079035
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
3 Kommentare
Neuester Kommentar
Moin Thilo,
bitte immer Codetags nutzen.
das geht einfacher:
Gruß Thomas
bitte immer Codetags nutzen.
Zitat von @Bommi1961:
das "if not exist" kannst du dir hier schenken, da das Skript ja längst beendet wurde, falls der Ordner existiert.if exist "%ziel%\%date%" exit
[...]
if not exist "%ziel%\%date%" md "%ziel%\%date%"
for /F "tokens=2 delims=." %%i in ("%date%") DO (set month=%%i)
for /F "tokens=3 delims=." %%i in ("%date%") DO (set jear=%%i)
das geht einfacher:
set month=%date:~3,2%
set year=%date:~-4%
Das Sichern funktioniert einwandfrei aber leider nicht das löschen des Verzeichnis.
Was mache ich hier falsch?
Deine Schleifenvariable ist falsch. Die muss natürlich %%F lauten, nicht %F%Was mache ich hier falsch?
for /f "skip=%anzahlBackups% delims=" %F% in ('dir /B /O-D /A:D %ziel%') do rd /s /q "%ziel%\%F%"
Gruß Thomas