Команда
dir /a:d /o:-d /t:w /b %DIRNAME%
вернет отсортированный по убыванию даты изменения список подкаталогов в заданном каталоге, из этого списка пропускаете первых N записей (N - количество дней за которые хотите оставлять бэкап), остальные удаляете.
Схематично код будет выглядеть так:
set "DIRNAME=c:\TEMP"
set "N=10"
for /f "usebackq skipto=%N% tokens=* delims=" %%a in ('dir /a:d /o:-d /t:w /b %DIRNAME%') do (
echo.RD /S /Q "%DIRNAME%\%%~a"
)
Код на работоспособность не проверял, но думаю идея должна быть понятна.
В помощь:
dir /?
for /?
rd /?