Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


Как-то сложновато у Вас ... Вроде бы для разных папок делается одно и то же действие, а Вы зачем-то пишите два куска для этого. Вот батник, который заменяет Ваши вторую и третью части скрипта: работает одна и та же подпрограмма LimCountDir. В ней сначала подсчитываем число папок, затем сколько папок надо удалить, затем по порядочку удаляем их, начиная с самых старых.
Процедура в указанной папке (Where) оставляет указанное кол-во самых свежих подпапок (HowMuch).
для сортировки по датам используется ключ /O команды Dir
С Вашим копированием не разбирался, если бы Вы просто описали, по какому принципу образуются имена файлов (директорий) - было бы проще.
Код: Выделить весь код
@Echo off
rem Пути указываем без кавычек и без \ и пробелов на конце
rem -------------------------------------------

Set HowMuch=1
Set Where=F:\Delete\Install
rem ---------------------------------------------------
Call :LimCountDir "%Where%" %HowMuch%
rem ---------------------------------------------------

Set HowMuch=5
Set Where=\\SERVER_NT\{Общая}\Delete\Install
rem ---------------------------------------------------
Call :LimCountDir "%Where%" %HowMuch%
rem ---------------------------------------------------
GoTo :Eof

rem ----------------------------------------------------
:LimCountDir

rem Подсчитаем кол-во директорий (Count) в указанной папке %1 (Путь передали в аргументе)
Set Count=0
FOR /F "usebackq  delims=" %%i IN (`Dir /B /A:D /O:D "%~1\"`) DO Call :CountDir

rem Удалим старые директории в указанной папке %1 сверх максимального количества %2 (передали в аргументе) 
Set /A DelCount=%Count%-%2
Set Count=0
FOR /F "usebackq delims=" %%i IN (`Dir /B /A:D /O:D "%~1\"`) DO Call :DelNumCount %DelCount% "%~1\%%i"
GoTo :Eof

:CountDir
Set /A Count=%Count%+1  
GoTo :Eof

:DelNumCount 
Set /A Count=%Count%+1
If %Count% LEQ %1 Rd %2 /S /Q 
GoTo :Eof
rem ----------------------------------------------------

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


Отправлено: 19:15, 15-09-2010 | #3