Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удаление папок определенного вида (http://forum.oszone.net/showthread.php?t=257212)

demon_d13 27-03-2013 00:47 2119504

Удаление папок определенного вида
 
Всем доброго времени суток!!!
Необходим батник удаляющий папки вида xxxx_xx_xx созданных по MD D:\%date:~6,4%_%date:~3,2%_%date:~0,2% по условию старше 7 дней.
Спасибо!!!

megaloman 28-03-2013 20:49 2120982

Код:

@Echo Off

Set Where=D:\
Set DeltaDay=-7

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

Call :FromNow %DeltaDay% %Date%

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=" %%i IN (`Dir "%Where%20??_??_??" /B /A:D /O:N`) DO (
        Set This=%%~nxi
        Set This=!This:~0,4!!This:~5,2!!This:~8,2!
        If !This! LEQ %yyyymmdd% (Rd "%%i" /s /q) Else (GoTo :Eof)
)
GoTo :Eof

:FromNow
 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal& Set yyyymmdd=%yyyy%%mm:~-2%%dd:~-2%
GoTo :Eof

Пересчет даты заимствовал здесь


Время: 07:33.

Время: 07:33.
© OSzone.net 2001-