Im Code oben fehlte das wichtige IN vor der ersten öffnenden Klammer.
Nun korrigiert und auf Verzeichnisse angepasst:
Code:
@echo off
set RETAINBACKUPS=3
set BACKUPDIR=D:\rive\some\path
if NOT exist "%BACKUPDIR%" (
echo.
echo "%BACKUPDIR%" existiert nicht.
echo.
pause
goto :EOF
)
for /F "skip=%RETAINBACKUPS% delims=" %%F IN ('dir /B /AD /O-D "%BACKUPDIR%" 2^>NUL') DO (
echo rmdir /S /Q "%BACKUPDIR%\%%F"
)
Wenn die Ausgabe passt, kannst du einfach das echo vor dem rmdir entfernen, um tatsächlich zu löschen. Es sollte klar sein, dass derartige Löschaktionen endgültig sind. Also immer schön testen, ggf. mit Kopien.
[EDIT]
Noch eine Kleinigkeit: Die Zahl der verbleibenden Stufen ist eigentlich nicht ganz korrekt. Es werden so viele Stufen behalten wie angegeben, aber wenn das neue Backup
nach dem Löschen erfolgt, liegt letztlich eine Stufe mehr im %BACKUPDIR%.
[/EDIT]
Grüße
Dalai