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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как программно удалить пустые папки ?

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

Пользователь


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

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


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

-------
If Begin then End; else End.


Отправлено: 11:00, 02-10-2009

 

Googler


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

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


Код: Выделить весь код
#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. папки "только для чтения" при удалении игнорируются, наличие файлов с нулевым размером расценивается как их отсутствие (учитывается только размер)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 02-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


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

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


amel27, спасибо то что надо.
и еще , можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре?
не могу поставить полезное сообщение, видимо после твоего выступления админ на время удалил эту возможность для меня)
+5

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

-------
If Begin then End; else End.


Отправлено: 12:34, 02-10-2009 | #3


Googler


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

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


Цитата R.M.L:
можно сделать так чтобы при длительном сканировании всего диска весь этот процесс обрабатывался на прогресс баре? »
Код: Выделить весь код
#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
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:04, 03-10-2009 | #4


Пользователь


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

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


чртт эт здорово ) показывает и обработанные папки. Спасибо!! ураааааааа

-------
If Begin then End; else End.


Отправлено: 18:17, 03-10-2009 | #5


Старожил


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

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


помогите удалить пустой каталог
Возник после удаления игрушечного мусора
ничего не помогает - Unloocer, plagin TotCom - короче нет
может кто знает как удалить пустой каталог - даже без имени "..." - во такое
XP Win SP3 Pro

Отправлено: 00:02, 15-05-2010 | #6


Аватара для FlatX007

Ветеран


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

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


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

C:\Users\????\Desktop\AutoIt v3 Script.au3 (8) : ==> Subscript used with non-Array variable.: $aRoot[2]+=1 $aRoot^ ERROR

Отправлено: 19:08, 15-05-2010 | #7


Старожил


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

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


НАШЕЛ здесь на сайте очень удобное предложение
вызов cmd затем
rd /s /q d:\... (указать путь каталога)
помогло даже там, где ничего не помогало совсем.

Отправлено: 20:37, 15-05-2010 | #8


Аватара для Yashied

Старожил


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

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


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

Отправлено: 11:07, 17-05-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как программно удалить пустые папки ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить папки по маске run0ut Скриптовые языки администрирования Windows 9 21-03-2017 01:27
Разное - Как удалить профильные папки из Личной Папки без последствий? Котяр Microsoft Windows 7 0 28-11-2009 20:36
Интерфейс - [решено] Нужно отобразить все пустые папки в директории Третий Microsoft Windows 7 1 24-08-2009 22:17
[решено] Как удалить файлы с папки...? Cobra_1_Stas Автоматическая установка Windows 2000/XP/2003 40 10-10-2006 10:11
Странные папки... как удалить Matrox Microsoft Windows 2000/XP 3 26-10-2005 12:57




 
Переход