' Набор функций для поиска файлов по маске 'if_mask(value,mask)проверяет value на сотвествие по маске mask, использую стандартные DOS-е правила для символов * и ? 'file_exist(dir, masks)в каталоге dir проверяет файлы на маску masks, вызывая функцию if_mask 'file_head_like(dir, head)упращеный поиск в каталоге dir файлов начинающихся с шаблона head 'dir_full (dir)проверяет наличие в каталоге dir хотябы одного файла 'все функции в случае положительного результата возвращают 1, и 0 в случае отрицательного function if_mask(value,mask) 'маска использует стандартные спец.символы: ? и * if_mask=1 ' в дальнейшем цикле в случае не совпадения будет выработан отрицательный результат, если же цикл будет пройден до конца то останется первоначальное положительное значение возврата функци max=len(mask) 'цикл анализирует все строки по символьно до конца самой длинной строки, по умочнию она - это маска if len(mask) mid(value,i,1)) and (mid(mask,i,1)<>"?")) or (mid (value,i,1)="") Then 'если пара символов из обрабатываемых строк не равны, то значит, строки не равны, при знаке ? в маске, цикл продолжает действие, однако не равенство может не возникать и при случае хх?* в этом случае при анализируемой строке которая меньше на 1 маски, необходима проверка на окончание строки if_mask = 0 ' результат возвращается отрицательным exit for end if Next end function function file_exist(dir, masks) ' проверяет все части файла на соотвествие маски file_exist=0 ' в обхадных циклах проверяется условие на сотвествие, если же цикл пройден до конца значит результат отрицательный, тот который есть по умолчанию Dim fso_f ' переменная принимающая входной параметр dir как строку и преобразующее его в конкретный параметр файловой системы Dim path ' путь к анализируемому каталогу Dim file 'имя текущего обрабатываемого файла Set fso_f = CreateObject("Scripting.FileSystemObject")'присвоение переменной класса файловой системы Set path =fso_f.GetFolder(dir) 'переменная указывает на каталог являющимся значением входной переменной if masks = "*.*" then ' если такая маска на входе то вся обработка сводится к проверке колличества файлов if path.files.count >0 then file_exist = 1 ' возвращение из функции значения 1 elseif Instr(masks,".")=0 then ' если у файла в маске нет расширения for each file in path.Files ' проверка каждого файла в каталоге if (if_mask(file.name,masks) > 0) and (instr(file.name,".")=0) then 'вызов функции проверки строки на маску при условии что текущий файл не имеет расширения file_exist = 1 'если вызванная функция if_mask вернула 1 значит в каталоге есть искомые файлы exit for 'выход из цикла и в дальнейшем из функции end if ' приминяется конструкция if .. then .. elseif .. else .. end if next else ' когда маска содержит файл с расширением for each file in path.Files if instr(file.name,".") >0 then 'если текущий файл слдержит расширение if (if_mask(left(file.name, instr(file.name,".")-1),left(masks,instr(masks,".")-1)) > 0) and (if_mask(mid(file.name,instr(file.name,".")+1,len(file.name)),mid(masks,instr(masks,".")+1,len(masks)))>0) then 'двойной вызов функции if_mask для имени и расширения, с параметрами которые формируются путем обрезания маски и имени файла на основании позиции символа : . сначала слева и до точки, затем середина - с точки и до размера строки file_exist = 1 ' если функция if_mask при проверке имени и расширения дважды вернула положительный результат exit for end if end if next end if end function function file_head_like (dir, head) ' для случая типа а_*.*, при этом * указывать не надо file_head_like=0 'изначально функция отрицательна, если ее что-либо удовлетворит в цикли проветки то она поменяет свое значение Dim fso_f Dim path Dim file Set fso_f = CreateObject("Scripting.FileSystemObject") Set path =fso_f.GetFolder(dir) for each file in path.Files if left(file.name,len(head))=head then file_head_like = 1 'обрезание имени текущего файла на длину маски и сравнивание этого куска с маской next end function function dir_full (dir)' функция file_exist с таким заданием тоже справится, но эта короче dir_full=0 Dim fso Dim path Set fso = CreateObject("Scripting.FileSystemObject") Set path = fso.GetFolder(dir) if path.Files.count >0 Then dir_full=1'если своиство объекта - указателя на директорий колличество файлов в нем больше 0 end function If file_exist("c:\temp","1??ma?n*.1?*") > 0 Then ' пример вызова наиболее универсальной функции из выше описанных msgbox( "O.K.") else msgbox("NO") end if