Rem 下面的过程遍历指定目录下面的所有文件 Sub SearchFiles(ByVal fd, ByVal fileName1 As String, ByVal fileName2 As String) Dim fl As File Dim sfd As Folder For Each fl In fd.Files '通过循环把文件逐个放在数组内 If InStr(fl.Name, fileName1) > 0 Or InStr(fl.Name, fileName2) > 0 Then ‘找到满足条件的文件 tmp_count = tmp_count + 1 ‘计数器(从1开始计数) tmp_file_arr(tmp_count) = fl.Path & "\" & fl.Name ‘将文件全路径存储到数组中 fl.Copy “D:\destion\” ‘拷贝文件到指定的目录 End If
Next fl
If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合 For Each sfd In fd.SubFolders '在 Folders 集合进行循环查找 SearchFiles sfd, fileName1, fileName2 '使用递归方法查找下一个文件夹 Next End Sub
调用格式 【例】搜索C:\test目录下的所有文件名包含“张三”或者“标题一”的文件,并且拷贝到指定的目录D:\destion下。 SearchFiles “C:\test”, “张三”, “标题一”
注: (1)上面搜索的所有结果存储在数组tmp_file_arr中,文件名包含全路径,如果需要取出文件名可以用 Set fso = CreateObject("Scripting.FileSystemObject") sname = fso.getfilename(tmp_file_arr(1)) '获取第一个文件的文件名 (2)上面使用了Folder数据类型,因此需要在引用中添加Microsoft Scripting Runtime,如下: |
|