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 '通過循環(huán)把文件逐個放在數(shù)組內(nèi)
If InStr(fl.Name, fileName1) > 0 Or InStr(fl.Name, fileName2) > 0 Then ‘找到滿足條件的文件
tmp_count = tmp_count + 1 ‘計數(shù)器(從1開始計數(shù))
tmp_file_arr(tmp_count) = fl.Path & "\" & fl.Name ‘將文件全路徑存儲到數(shù)組中
fl.Copy “D:\destion\” ‘拷貝文件到指定的目錄
End If
Next fl
If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夾中所有子文件夾(包括隱藏文件夾和系統(tǒng)文件夾)組成的 Folders 集合
For Each sfd In fd.SubFolders '在 Folders 集合進行循環(huán)查找
SearchFiles sfd, fileName1, fileName2 '使用遞歸方法查找下一個文件夾
Next
End Sub
調(diào)用格式
【例】搜索C:\test目錄下的所有文件名包含“張三”或者“標(biāo)題一”的文件,并且拷貝到指定的目錄D:\destion下。
SearchFiles “C:\test”, “張三”, “標(biāo)題一”
注:
(1)上面搜索的所有結(jié)果存儲在數(shù)組tmp_file_arr中,文件名包含全路徑,如果需要取出文件名可以用
Set fso = CreateObject("Scripting.FileSystemObject")
sname = fso.getfilename(tmp_file_arr(1)) '獲取第一個文件的文件名
(2)上面使用了Folder數(shù)據(jù)類型,因此需要在引用中添加Microsoft Scripting Runtime,如下: