Возникла тут у меня задача обработать 103943 файла расположенных в 2618 папках.

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

Ну раз требует, то сделаем. За основу взял ту же процедуру, что выложил по ссылке выше.
Подумав немного получил на выходе:

procedure AllFiles2one( Path,path2: string );
var
sRec: TSearchRec;
isFound: boolean;
begin
try
mkdir(path2); // создаем папку куда все это копируем.
except
end;
isFound := FindFirst( Path + ‘\*.*’, faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> ‘.’ ) and ( sRec.Name <> ‘..’ ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
AllFiles2one( Path + ‘\’ + sRec.Name, path2) else

begin
//form1.Caption:=Path + ‘\’ + sRec.Name;    // раскомментируйте для того чтобы можно было следить за процессом выполнения. Хотя следить можно просто мониторя вес итоговой папки и сравнивая с начальной.
CopyFile(Pchar( Path + ‘\’ + sRec.Name ), Pchar( Path2 + ‘\’ + StringReplace( StringReplace(Path,’:\’,'_’,[]) + ‘_’ + sRec.Name,’\',’_',[rfReplaceAll] )),true);
end;

end;
Application.ProcessMessages;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;

Сначала хотел обрезать путь до файла и так и копировать, но понял что туплю, потому что некоторые файлы могут иметь одно имя, и поэтому в процедуре каждый выходной файл имеет адрес своего пути. Переименовать их в обычные числа вы сможете вот этой моей прогой.

Процедура принимает входные данные:

Path — главный адрес с которого начать читать дерево.

Path2 — папка куда копировать.

!!ВНИМАНИЕ. ПРОЦЕДУРА КОПИРУЕТ ФАЙЛЫ, СЛЕДОВАТЕЛЬНО УЧИТЫВАЙТЕ ЭТО ОБРАБАТЫВАЯ БОЛЬШИЕ КАТАЛОГИ!!


Автор: Elsper.ru


VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)

Один комментарий на запись “Скопировать все файлы из дерева в одну папку.”

  1. IAD пишет:

    я бы создал симлинки.

    VA:F [1.9.14_1148]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.14_1148]
    Rating: 0 (from 0 votes)

Оставить комментарий

Рейтинг блогов

Рейтинг блогов
Яндекс.Метрика