PDA

Показать полную графическую версию : [решено] Удаление папок прошлых дат


Dromych
23-11-2017, 14:21
Доброго времени суток!

Помогите пожалуйста сделать bat файл.

Имеется следующая структура папок:

/MSC/dbl1/2017-11-23
/MSC/dbl2/2017-11-22
/MSC/dbl3/2017-11-21
/MSC/rbi4/2017-11-23
/MSC/tbi5/2017-11-20
/MSC/ics6/2017-11-21

Необходимо сделать следующее: Удалить папки в названии которых имеется дата, при этом оставив папки за сегодняшний день.
Батник будет запускаться раз в сутки и удалять старье, оставляя данные только за сегодня.

megaloman
23-11-2017, 14:57
Dromych, Имена dbl1 dbl2 dbl3 rbi4 tbi5 ics6 постоянные или каждый день разные?
Что надо удалять, например, /MSC/dbl2/2017-11-22 или /MSC/dbl2 ?

Dromych
23-11-2017, 15:02
megaloman, имена могут быть разными..
Удалять нужно только папки с датой в имени, т.е. /MSC/dbl2/2017-11-22

megaloman
23-11-2017, 15:25
@Echo Off
Set "BoxIn=Z:\MSC"

Call :StrDate "Tdate"
FOR /F "usebackq delims=" %%i IN (`dir "%BoxIn%" /B /A:D 2^>nul`) DO (
FOR /F "usebackq delims=" %%j IN (`dir "%BoxIn%\%%i\20??-??-??" /B /A:D 2^>nul`) DO (
If Not "%%j"=="%Tdate%" Rd /S /Q "%BoxIn%\%%i\%%j"
)
)
GoTo :Eof

:StrDate
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET @Tdate=%%d
Set "%~1=%@Tdate:~0,4%-%@Tdate:~4,2%-%@Tdate:~6,2%"
GoTo :Eof
Пропишите свой путь вместо моего Z:\MSC




© OSzone.net 2001-2012