Код:
@Echo Off
SetLocal EnableDelayedExpansion
set minus_days=7
Set papka=D:\1cBackupElena\v82BackupElena
set _dt=!DATE!
rem set _dt=01.07.2012
set _dt=%_dt:~-10%
set _day=%_dt:~0,2%
set mon=%_dt:~3,2%
set year=%_dt:~6,4%
if %_day% LSS 10 set _day=%_day:~1%
if %mon% LSS 10 set mon=%mon:~1%
set /A _day-=%minus_days%
rem echo _day=!_day!
if %_day% LSS 0 (
set /A mon-=1
if !mon!==0 (
set mon=12
set /A year-=1
)
if !mon!==2 (
set /A ost=%year% %% 4
if !ost!==0 (set /A _day=29+_day) else (set /A _day=28+_day)
echo ost=!ost!
) else (
set /A _day=31+_day
for %%m in (4 6 9 11) do if !mon!==%%m set /A _day=_day-1
)
)
if %_day% LSS 10 set _day=0%_day%
if %mon% LSS 10 set mon=0%mon%
set old=%year%-%mon%-%_day%
echo old=%old%
for /D %%f in (%papka%\*.*) do (
if not %%f==%0 (
set dat=_%%~nxf
set dat=!dat:~7,4!-!dat:~4,2!-!dat:~1,2!
if !dat! LEQ %old% (
rd /s /q %%f
)
)
)
Похожую задачу я делал в 2012 году, только там надо было удалять устаревшие файлы по дате изменения файла. Так что пришлось только отыскать тот батник и немножко его модифицировать. В принципе, можно ориентироваться не на имя каталога, а на время изменения. Для этого нужно будет заменить строку
Код:
set dat=_%%~nxf
на
Код:
set dat=_%%~tf
, как было изначально в том моём батнике.