Показать полную графическую версию : [решено] Как программно удалить пустые папки ?
Привет
У меня есть аддон встраиваемый в контекстное меню проводника для удаления пустых папок. Но, этот аддон действует только при наведении на какую то определенную папку для сканирования. Вопрос - как мне сделать это программно, одним внешним файлом?
#Include <File.au3>
$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. папки "только для чтения" при удалении игнорируются, наличие файлов с нулевым размером расценивается как их отсутствие (учитывается только размер)
amel27, спасибо то что надо.
и еще , можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре?
не могу поставить полезное сообщение, видимо после твоего выступления админ на время удалил эту возможность для меня)
+5
Сканировал все диски, прошло времени около 6 минут и удалено 768 пустых папок. здорово
можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре? »
#Include <File.au3>
$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
чртт эт здорово ) показывает и обработанные папки. Спасибо!! ураааааааа
помогите удалить пустой каталог
Возник после удаления игрушечного мусора
ничего не помогает - Unloocer, plagin TotCom - короче нет
может кто знает как удалить пустой каталог - даже без имени "..." - во такое
XP Win SP3 Pro
FlatX007
15-05-2010, 19:08
amel27 »
у меня ошибку выдаёт
C:\Users\????\Desktop\AutoIt v3 Script.au3 (8) : ==> Subscript used with non-Array variable.: $aRoot[2]+=1 $aRoot^ ERROR
НАШЕЛ здесь на сайте очень удобное предложение
вызов cmd затем
rd /s /q d:\... (указать путь каталога)
помогло даже там, где ничего не помогало совсем.
Есть такая простая функция _WinAPI_PathIsDirectoryEmpty() из WinAPIEx.au3 (http://autoit-script.ru/index.php?topic=47.0).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.