例如:图片,程序文件等等
用API啊,将每个目录下的文件,记录到一个文件中,然后对你要查找的文件名,进行搜索。 简单,多想想。 当然,算法很重要,因为涉及效率。
非原创,出自个人从网络得到的资料,仅供LZ参考:
' Need a ListBox, CommandBox
Option Explicit
'宣告搜寻到的文件的储存阵列变数
Private FilePackage() As String
Private Sub Command1_Click()
'宣告存放目录名称储存阵列变数
Dim DirPackage() As String
'存放文件搜寻条件之字串
Dim SearchString As String
'接收 Dir() 传回字串,并做为回圈判断的字串
Dim DirString As String
'I 目前搜寻目录的指位器,J 是 DirPackage 目录阵列之上限指标
'K 是 FilePackage 之文件阵列之上限指标
Dim I As Long, J As Long, K As Long
'把 ListBox 的旧显示资料清掉
List1。
Clear
'把 FilePackage 的上一次搜寻资料清掉
Erase FilePackage
'假设我们的搜寻从 C 碟根目录开始
ReDim DirPackage(0)
'路径结尾一定要加 "\"
DirPackage(0) = "c:\"
'假设我们的搜寻字串是 "*。
exe"
SearchString = "*。exe"
'显示沙漏指标
Me。MousePointer = 11
'-------- 以下搜寻 C 碟 所有的目录 -----------------
'直到目录指位器 I 超过目录上限指标 J 才结束搜寻
Do While I ""
'不要把上层目录和现目录的指标符号算进去
If DirString <> "。
" And DirString <> "。。" Then
'如果找到的是个目录
If (GetAttr(DirPackage(I) & DirString) And vbDirectory) _
= vbDirectory Then
'把目录上限加 1
J = J + 1
'把储存目录名称的阵列加一个
ReDim Preserve DirPackage(J)
'把查到的新目录放在 DirPackage 新元素
DirPackage(J) = DirPackage(I) + DirString + "\"
'如果找到的是个文件
Else
'如果与搜寻字串相符合
If UCase(DirString) Like UCase(SearchString) Then
'把储存文件名称的阵列加一个
ReDim Preserve FilePackage(K)
'把查到的新文件放在 filePackage 新元素
FilePackage(K) = DirPackage(I) + DirString
'把文件上限加 1
K = K + 1
End If
End If
End If
'继续找是否有符合的资料,并把结果放 DirString
DirString = Dir
DoEvents
Loop
'把现目录指标往下移一个
I = I + 1
Loop
'-------- 以下将结果输出到列示盒 -----------------
'-------- 以下为找到文件之总计 -----------------
'还原鼠标指标
Me。
MousePointer = 0
If K = 0 Then
MsgBox "没有 " & SearchString & " 的文件"
Else
'以下将结果输出到列示盒
For I = 0 To UBound(FilePackage)
List1。
AddItem FilePackage(I)
DoEvents
Next
MsgBox "总共找到 " & UBound(FilePackage) + 1 & " 个文件"
End If
End Sub
。
。