Компьютерный форум 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=331404)

Dromych 23-11-2017 14:21 2779683

Удаление папок прошлых дат
 
Доброго времени суток!

Помогите пожалуйста сделать 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 2779686

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

Dromych 23-11-2017 15:02 2779688

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

megaloman 23-11-2017 15:25 2779696

Код:

@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


Время: 22:55.

Время: 22:55.
© OSzone.net 2001-