Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

Как удалить не пустой католог   Найти похожие ветки 

 
bAgmAn   (2002-12-12 18:14) [0]

Долго думал как бы удалить католог в котором есть папки и файлы. Количество просто огромно а время критично.


 
Song   (2002-12-12 18:32) [1]

ShFileOperation() или TSearchRec


 
TCrash   (2002-12-12 19:09) [2]

Привожу текст функции. Где взял - не помню но не моя. просьба за копирайт не приставать.


function FullRemoveDir(Dir:string; RemoveRoot:boolean):Boolean;
var i:Integer;
SRec:TSearchRec;
FN:String;
begin
Result:= False;
if Dir = "" then exit;
if not DirectoryExists(Dir) then exit;
Result:= True;
// Добавляем слэш в конце и задаем маску - "все файлы"
Dir:= IncludeTrailingBackslash(Dir) + "*.*";
i:= FindFirst(Dir, faAnyFile, SRec);
while i = 0 do
begin
// Получаем полный путь к файлу или директорию
FN:= ExtractFileDir(Dir)+"\"+SRec.Name;
// Если это директорий
if SRec.Attr = faDirectory then
begin
if (SRec.Name <> "" ) and (SRec.Name <> ".") and (SRec.Name <> "..") then
// Рекурсивный вызов этой же функции с ключом удаления корня
FullRemoveDir(FN,True);
end
else
// Иначе удаляем файл
begin
if SRec.Attr <> faArchive then FileSetAttr(FN, faArchive);
// Если хотя бы один файл не удален - результат отрицательный, но операция продолжается до конца
if not DeleteFile(FN) then Result:= false;
end;
// Берем следующий файл или директорий
i:= FindNext(SRec);
end;
FindClose(SRec);

// Если необходимо удалить корень - удаляем
if RemoveRoot then
try
if not RemoveDir(ExtractFileDir(Dir)) then Result:= false;
except
Result:= false;
end;

end;


Кстати, спасибо автору кода. Работает быстро и корректно. Тестировано на железе :
Cel 600,
392 M,
MB - Abit SE6,
HDD - Maxtor 40G, 7200
Результат : удаление копи папки W2k - 4 сек.
Комментарии излишни - кол-во файлов и папок превышает 5000.


 
oomneeq   (2002-12-12 19:22) [3]

как вариант

CreateProcess(nil,"cmd.exe/c rmdir /q/s C:\WINNT",
nil, nil,
false,
CREATE_NO_WINDOW,
nil,
nil,
StartupInfo,
ProcessInfo)

имя каталога подставить по вкусу :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
3-74561
Замученный
2002-12-04 11:23
2002.12.23
IBQ


1-74753
VJar
2002-12-05 17:35
2002.12.23
Изменение своей же иконки


6-74879
Lefan
2002-10-28 09:19
2002.12.23
проверка страницы перед закачкой...


1-74726
Gennadiy
2002-12-13 12:16
2002.12.23
Работа с текстом


1-74724
Separator
2002-12-12 08:16
2002.12.23
Простое число





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский