Форум: "Основная";
Текущий архив: 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