[решено] Как программно удалить пустые папки ?

Ответить
Аватара пользователя
R.M.L

[решено] Как программно удалить пустые папки ?

Сообщение R.M.L »

Привет

У меня есть аддон встраиваемый в контекстное меню проводника для удаления пустых папок. Но, этот аддон действует только при наведении на какую то определенную папку для сканирования. Вопрос - как мне сделать это программно, одним внешним файлом?
Аватара пользователя
R.M.L

Re: [решено] Как программно удалить пустые папки ?

Сообщение R.M.L »

Код:

Код: Выделить всё

#Include 
$sDIR = "C:\TEST"
$iCNT = _DirRemoveEmpty($sDIR)
MsgBox(0, "Сообщение", "Удалено "& $iCNT &" пустых каталогов")
Func _DirRemoveEmpty($sRoot)
    Local $iDIR = 0, $aDIR = _FileListToArray($sRoot,'*', 2)
    If IsArray($aDIR) Then
        For $i=1 To $aDIR[0]
            $iDIR += _DirRemoveEmpty($sRoot &"\"& $aDIR[$i])
        Next
    EndIf
    If DirGetSize($sRoot)=0 Then $iDIR += DirRemove($sRoot)
    Return $iDIR
EndFunc

P.S. папки "только для чтения" при удалении игнорируются, наличие файлов с нулевым размером расценивается как их отсутствие (учитывается только размер)
Аватара пользователя
R.M.L

Re: [решено] Как программно удалить пустые папки ?

Сообщение R.M.L »

amel27, спасибо то что надо.

и еще , можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре?

не могу поставить полезное сообщение, видимо после твоего выступления админ на время удалил эту возможность для меня)

+5



Сканировал все диски, прошло времени около 6 минут и удалено 768 пустых папок. здорово
Аватара пользователя
amel27

Re: [решено] Как программно удалить пустые папки ?

Сообщение amel27 »

Цитата R.M.L:



можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре?
[решено] Как программно удалить пустые папки ?






Код:

Код: Выделить всё

#Include 
$sRoot = "C:\TEST"
ProgressOn ("Поиск пустых папок", "Подготовка к поиску...")
Global $iCNT = 0, $iDEL = 0, $aRoot = DirGetSize($sRoot, 1)
$aRoot[2]+=1
_DirRemoveEmpty($sRoot)
ProgressOff()
MsgBox(64, "Поиск пустых папок", "Поиск завершен"&@CRLF&@CRLF&"Папок ВСЕГО: "&@TAB&$iCNT&@CRLF&"Папок удалено: "&@TAB&$iDEL)
Func _DirRemoveEmpty($sDIR)
    Local $iPRC, $aDIR = _FileListToArray($sDIR,'*', 2)
    If IsArray($aDIR) Then
        For $i=1 To $aDIR[0]
            $iDEL += _DirRemoveEmpty($sDIR &"\"& $aDIR[$i])
        Next
    EndIf
    $iCNT +=1
    $iPRC = Int($iCNT*100/$aRoot[2])
    ProgressSet($iPRC, "Обработано папок: "&$iCNT&@TAB&@TAB&" Удалено: "&$iDEL, $sDIR)
    If DirGetSize($sDIR)=0 Then $iDEL += DirRemove($sDIR)
EndFunc
Аватара пользователя
R.M.L

Re: [решено] Как программно удалить пустые папки ?

Сообщение R.M.L »

чртт эт здорово ) показывает и обработанные папки. Спасибо!! ураааааааа
Аватара пользователя
R.M.L

Re: [решено] Как программно удалить пустые папки ?

Сообщение R.M.L »

помогите удалить пустой каталог

Возник после удаления игрушечного мусора

ничего не помогает - Unloocer, plagin TotCom - короче нет

может кто знает как удалить пустой каталог - даже без имени "..." - во такое

XP Win SP3 Pro
Аватара пользователя
FlatX007

Re: [решено] Как программно удалить пустые папки ?

Сообщение FlatX007 »

Цитата amel27:



amel27
[решено] Как программно удалить пустые папки ?




у меня ошибку выдаёт



C:\Users\????\Desktop\AutoIt v3 Script.au3 (8) : ==> Subscript used with non-Array variable.: $aRoot[2]+=1 $aRoot^ ERROR
Аватара пользователя
vla-ad

Re: [решено] Как программно удалить пустые папки ?

Сообщение vla-ad »

НАШЕЛ здесь на сайте очень удобное предложение

вызов cmd затем

rd /s /q d:\... (указать путь каталога)

помогло даже там, где ничего не помогало совсем.
Аватара пользователя
vla-ad

Re: [решено] Как программно удалить пустые папки ?

Сообщение vla-ad »

Есть такая простая функция _WinAPI_PathIsDirectoryEmpty() из
WinAPIEx.au3
.
Ответить

Вернуться в «AutoIt»