Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-74789
Dmitriy
2002-12-11 13:13
2002.12.23
Из области геометрии


1-74681
Che
2002-12-13 12:54
2002.12.23
Active !!


4-75058
Василий
2002-11-06 18:01
2002.12.23
Как програмно инсталировать шрифт ?


3-74602
xenon
2002-12-04 15:46
2002.12.23
Обработка сообщений сервера


14-74904
Arhangel
2002-12-01 13:02
2002.12.23
Зарание извеняюсь за это сообщение!