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

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

Ветеран


Contributor


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

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


1. Этот скрипт не справляется вообще никак при работе с файлами очень больших размеров - А почему бы не воспользоваться vbs или js ?

2. Как понять: Когда очень много директорий, то приходиться прописывать условие и цикл для каждой директории, Речь идёт о директориях, находящихся в папке, описываемой в set BackUp=MyDisk:\MyBackUp, судя по организации цикла 'dir /ad /b /o-d вложенные директории не анализируются? Почему бы не написать нечто подобное:
Код: Выделить весь код
@Echo Off

Do Call :SubRoutine "C:\Program Files"
Do Call :SubRoutine "C:\Windows"

GoTo :Eof

:SubRoutine
Set Num=10
Pushd %1

Echo --------------------------------------------------->>%~dpn0.log
Echo %1>>%~dpn0.log
Echo --------------------------------------------------->>%~dpn0.log

For /F "usebackq delims=" %%d in (`Dir /b /A:D /O:-D`) Do Call :Proceed "%%d"
Popd
GoTo :Eof

:Proceed
Set /A Num-=1
If %Num% GEQ 0 GoTo :Eof

Echo %Date%  %Time%: Erase %1>>%~dpn0.log
rem                    rd /s /q %1 2>nul >nul
либо
Код: Выделить весь код
@Echo Off

For %%i In ("C:\Program Files" "C:\Windows") Do Call :SubRoutine %%i
GoTo :Eof

Далее подпрограммы взять из предыдущего кода
По понятным причинам (я указал директории "C:\Program Files" "C:\Windows" чтобы посмотреть выборку) удаление я заремил - подправьте в Вашем реальном случае

3. Как понять: но оставляя всегда нужное фиксированное количество резерва - в чем резерв измеряется? Похоже, вы удаляете 10 старых директорий и иначе их никак не анализируете.

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


Последний раз редактировалось megaloman, 21-12-2011 в 20:41.


Отправлено: 17:26, 21-12-2011 | #3