Как сортировать и удалять старые каталоги на основе имени папки, которая находится в дате - PullRequest
0 голосов
/ 14 марта 2019

Итак, у меня есть папка с именем Folder1, и внутри этой папки есть несколько других папок для нашей сборки. Соглашение об именах этих папок сборки - это дата их создания. Например: 20190314141438 (это 2019-03-14 время 14:14:38). Так что мне нравится делать, это удалить все, кроме последних 3 последних папок. Я запустил его в пакетном скрипте, но смог удалить его, основываясь на дате последнего изменения, что работает, но нужно как-то сравнить все имена папок и удалить старые. Вот мой сценарий:

if not exist "%Location%" (
    echo The Location - "%Location%" does not exist
) ELSE (
    for /F "skip=3 delims=" %%i in ('dir "%Location%" /AD /B /O-D 2^>nul') do (
        echo Removing "%Location%\%%i"
        rd /Q /S "%Location%\%%i"
    )
)

Я также подумал, что если это невозможно с помощью пакетного скрипта, я могу создать java-программу, которая сделает это, если у кого-то есть идеи о том, как мне начать. Спасибо.

UPDATE: Некоторые из папок также будут иметь номер выпуска в конце имени папки, например 20190314141438_Release2. Как бы я сказал командный файл игнорировать их. Я думал об использовании findstr /C:"Release1" и как-то вставить это в оператор if else?

1 Ответ

0 голосов
/ 15 марта 2019

Спасибо вам LotPings и Mofi за помощь в решении этого вопроса. Я разместил скрипт, который работает:

if not exist "%Location%" (
    echo The Location - "%Location%" does not exist
) ELSE (
    for /F "skip=3 delims=" %%i in ('dir "%Location%" /AD /B /O-N 2^>nul ^| 
             %SystemRoot%\System32\findstr.exe /I /V /C:Release') do
        echo Removing "%Location%\%%i"
        rd /Q /S "%Location%\%%i"
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...