Скачать Поиск файлов по всему диску

08.07.1997
Скачать файл (1,26 Кб)




Для поиска используются FindFirst & FindNext.
Причем их приходится вызывать дважды:
Первый раз для указанных файлов, а второй раз - 
чтобы найти все вложенные подкаталоги.
Uses DOS;
 
Procedure FileFind(Dir,FindName : PathStr);
{Поиск файлов по маске по всему диску}
 
 Procedure SearchDir(Dir : PathStr);
 Var
   SRec       : SearchRec;
 begin
   {Поиск файлов по маске}
   if Dir[Length(Dir)] <> '\' then Dir := Dir+'\';
   FindFirst(Dir + FindName, AnyFile, SRec);
   While DosError = 0 do
     begin
       With SRec do
        if Attr and (VolumeID + Directory) = 0 then
         WriteLn(Dir + Name);
       FindNext(SRec);
     end;
   {Поиск всех вложенных каталогов, в т.ч. скрытых, системных, r/o}
   FindFirst(Dir+'*.*', Directory or ReadOnly or Hidden or SysFile, SRec);
   While DosError = 0 do
     begin
       With SRec do
        if (Attr and Directory <> 0) and (Name[1] <> '.') then
         SearchDir(Dir+Name);
       FindNext(SRec);
     end;
 end;
 
begin
 SearchDir(Dir);
end;
{------------------------------------------}
{Пример поиска всех .TXT файлов на диске С:}
begin
  FileFind('c:\','*.txt');
end.