Fehler bei for (in einem CMD Skipt)

bommi1961
Goto Top
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

Content-Key: 2085079035

Url: https://administrator.de/contentid/2085079035

Ausgedruckt am: 30.06.2022 um 15:06 Uhr

Mitglied: SlainteMhath
SlainteMhath 07.03.2022 um 13:22:07 Uhr
Goto Top
Moin,

setz den Code doch bitte in code-Tags, so ist das schlecht lesbar.

lg,
Slainte
Mitglied: TK1987
TK1987 07.03.2022 um 13:23:26 Uhr
Goto Top
Moin Thilo,

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.


das geht einfacher:

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%

Gruß Thomas
Mitglied: Bommi1961
Bommi1961 07.03.2022 um 13:47:20 Uhr
Goto Top
Hallo Thomas,

jetzt löscht er immer das gerade erstelle Verzeichnis.

@echo on
rem Author: T.B.
rem ######################################### Anfang Konfiguration

set quelle=C:\Temp
set ziel=w:\Backup\test1


REM #### Anzahl der BACKUPs die aufgehoben werden.
set anzahlBackups=3


REM
REM ####### ZEIT fest legen

set month=%date:~3,2%
set year=%date:~-4%

rem ######################################### Ende Konfiguration



if exist "%ziel%\%date%" exit

echo Backup startet... %ziel%\%date%


if not exist "%quelle%" (
ECHO "ERROR: Quelle exsistiert nicht"
exit
)



REM BackUp ist gestartet
if not exist "%ziel%\%date%\*.%month%.%jear%" (
Echo Erstelle vollstandiges Backup fur diesen Tag
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



for /f "skip=%anzahlBackups% delims=" %%F in ('dir /B /O-D /A:D %ziel%') do rd /s /q "%ziel%\%%F"

exit

So wie es aussieht wird die Varialbe F nicht erkannt als solche Siehe Anhang.
cmd_fehler