Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.022 c
3-74610
Gaber
2002-12-05 10:30
2002.12.23
Перенос данных из Excel в IB


6-74875
bak
2002-10-29 13:06
2002.12.23
узнать ID


7-75006
calmterror
2002-10-19 22:03
2002.12.23
Запуск программы из сервиса


1-74819
Wolverin
2002-12-11 16:46
2002.12.23
Печать


14-74922
Мазут Береговой
2002-12-01 06:12
2002.12.23
Я очень disapointed! Очень disapointed!




   Наверх