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

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

Аватара для AZJIO

Старожил


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

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


-TRM-, Вот пример:

Код: Выделить весь код
#include <Array.au3>
#include <FileOperations.au3>

$timer = TimerInit() ; таймер для скорости поиска
$aFolderList = _FO_SearchEmptyFolders(@WindowsDir) ; путь для примера поиска, НЕ СЛЕДУЕТ УДАЛЯТЬ в нём пустые папки
_ArrayDisplay($aFolderList, 'Время : ' & Round(TimerDiff($timer) / 1000, 2) & ' сек', -1, 0, '', '|', '№|Пустые папки') ; просмотр найденных пустыых папок

If MsgBox(4 + 262144, 'Сообщения', 'Удалить пустые папки ?') = 6 Then ; если ответ равен 6, что значить "Да", тогда
    $err = '' ; переменная для лога ошибок
    For $i = 1 To $aFolderList[0] ; цикл удаления папок
        If Not FileRecycle($aFolderList[$i]) Then ; если не удалось переместить в корзину, тогда
            If Not (FileSetAttrib($aFolderList[$i], '-RST') And FileRecycle($aFolderList[$i])) Then ; если не удалось снять атрибуты и переместить в корзину, тогда
                $err &= $aFolderList[$i] & @CRLF ; пишем лог
            EndIf
        EndIf
    Next
    If $err Then MsgBox(0, 'Лог ошибок', $err) ; если лог ошибок не пустой, то смотрим его
EndIf

; FileRecycle($aFolderList[$i]) ; удаление в корзину
; DirRemove($aFolderList[$i], 1) ; удаление навсегда
1. UDF пишется не для того чтобы в него что-то вписывали. Всё что надо в него вписать передаётся через параметры, иначе весь смысл UDF пропадает.
2. Я вот подумал, а что если у вложенной пустой папки атрибут только чтение? Тогда думаю папку невозможно удалить, если используется поиск с ключом 0, то есть надо получить именно папки которые пусты совсем, тогда есть гарантия что при неудалении атрибуты будут сняты, чтобы удалить.

Цитата -TRM-:
Это не зацикливание функции (одна в одной) ? »
это зацикливание и называется рекурсией. Глубина рекурсии не превышает 123 (количество максимально возможных вложений папок)

Последний раз редактировалось AZJIO, 03-02-2013 в 05:57.


Отправлено: 05:01, 03-02-2013 | #18