Dieses Script löscht in einem anzugebenden Ordner Dateien, wobei die neuesten aufbewahrt werden.

Der Ordner (Variable WORKFOLDER), die Anzahl der aufzubewahrenden Dateien (KEEPFILES) und die Endung der Dateien (WORKEXT) wird über Variablen im Script gesteuert.

@echo off
setlocal
set WORKFOLDER=D:\deltest
rem *** WORKFOLDER gibt den Ordner an, der bearbeitet werden soll
set WORKEXT=*
rem *** WORKEXT gibt die Endung an, die als Filter gesetzt wird (*=alle; bmp=nur Bitmaps)
set KEEPFILES=12
rem *** KEEPFILES ist die Anzahl der Dateien, die aufbewahrt werden

set COUNTER=0
for /F %%i in ('dir /O-D /A-D /B "%WORKFOLDER%\*.%WORKEXT%"') do call :PARSELINE "%%i"
endlocal
goto :EOF

:PARSELINE
set /A COUNTER=COUNTER+1
if %COUNTER% LEQ %KEEPFILES% goto :EOF
set WORKFILE=%1
set WORKFILE=%WORKFILE:"=%
rem *** Nicht wundern, die Zeile darueber dient dazu, die Anfuehrungszeichen wieder rauszuwerfen
echo Loesche Dateinummer %COUNTER%: %WORKFOLDER%\%WORKFILE%
del /F "%WORKFOLDER%\%WORKFILE%"
goto :EOF

Wenn man bei der WORKEXT z.B. BMP einsetzt werden nur BMP-Dateien bearbeitet, d.h. es werden alle BMPs bis auf die 12 neuesten gelöscht. Alle anderen Files werden nicht angefasst!