Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата finderhd:
Folder_main\YYYYMMDD\ »
Цитата finderhd:
Нужно удалить все старые папки вместе с файлами, не трогая последние три. »
Если я правильно понял, надо оставить нетронутыми последние 3 папки, допустим:
Folder_main\20200210\
Folder_main\20200205\
Folder_main\20200203\
А предыдущие:
Folder_main\20200202\
Folder_main\20200201\
Folder_main\20200128\
Folder_main\20191231\
.......
удалить.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In\Folder_Main"
	Set "Mask=2???????"
	Set /A Skip=3

	FOR /F "usebackq Skip=%Skip% delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:D /O:-N`) Do Call Echo %%Time%% "%BoxIn%\%%f" &Rd /S /Q "%BoxIn%\%%f"
rem pause
Exit /B 0
ИМХО, это максимально быстрый вариант, не думаю, что стОит разбивать этот процесс на части, при такой постановке задачи опускаться до работы с подпапками и удаления файлов не комильфо - преступно медленно.Можете поставить этот скрипт в планировщик и запускать его хоть сто раз в день. Гарантировано останутся три созданные последними папки.
Вставил визуальный контроль процесса, если это не надо - уберите выделенное красным цветом. ОцЕните скорость выполнения - если посчитаете, что всё-таки надо процесс разбить - пишите.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 14-02-2020 в 14:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:27, 12-02-2020 | #4