Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Файловые Утилиты    >>    filefind
   
 
 Поиск файлов по всему диску   Dima Orlov 08.07.1997

Поиск файлов по маске по всему диску с помощью FindFirst & FindNext



1k 
 

- 4INT ----------------------------------------------------- It's interesting - Msg : 101 of 200 Addr Date From : Dima Orlov 2:461/27 08.07.97 Subj : DIR C: /S ------------------------------------------------------------------------------- Hello, Anton Kapcinel ! AK> Hаpод,а как к пpимеpу весь диск с: пpовеpить на существование файлов AK> '*.txt' ? То есть пpогу как написать, котоpая заданный файл по всему AK> диску ищет ??? Пора бы уже в ФАК это вставить... Для поиска используются FindFirst & FindNext. Причем их приходится вызывать дважды: Первый раз для указанных файлов, а второй раз - чтобы найти все вложенные подкаталоги. С уважением, Дима Орлов --- [CONNECT Team] * Origin: Electric BBS (0572) 477-177 (2:461/27) {> Cut here. FileName= FILEFIND.PAS } { From : Dima Orlov 2:461/27 08.07.97} 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.