当前位置:编程学习 > VB >>

如何历遍一个目录下的所有文件夹,包括隐藏的文件夹

不知该怎么办,那些隐藏的文件夹就是历不出来,大家有什么办法吗? --------------------编程问答-------------------- 哦,补充:由于相关限制,不能用FSO功能。 --------------------编程问答-------------------- '添加 Command1  List1

'这个代码可以检测到隐藏的文件夹, 而且应该不会有其他人比我这个快速

Private Declare Function GetTickCount& Lib "kernel32" ()
Private WithEvents Timer1 As Timer
Dim FolderPath$, TxtName$, Starttm&, BgnTm&
Private Sub Form_Load()
   TxtName = "c:\dir.txt"
   FolderPath = "e:\music" '这里你可以用Browser等方式挑路径或直接用变量
End Sub

Private Sub Command1_Click()
   On Error Resume Next
   BgnTm = GetTickCount
   If Dir(FolderPath, vbDirectory) = "" Then MsgBox "bb": Exit Sub
   If Dir(TxtName) <> "" Then Kill TxtName
   Open "c:\SchDir.bat" For Output As #1
   Print #1, "@echo off"
   Print #1, "dir " & FolderPath & " /ad/s/b >" & TxtName
   Print #1, "exit"
   Close #1
   Call Shell("cmd /c c:\schdir.bat", vbHide)
   Starttm = Timer
   Do
      DoEvents
      If Not Isrunexe("cmd.exe") Then Exit Do
   Loop Until Timer >= Starttm + 20 '设定最慢20秒可搜完,看你要搜的路径大小自己看着办
   List1.Visible = False '暂时关闭会快N倍
   If Dir(TxtName) <> "" Then
      Open TxtName For Input As #1
      List1.Clear
      While Not EOF(1)
         Line Input #1, aa
         If InStr(aa, "_BACK") = 0 Then List1.AddItem aa
      Wend
      Close #1
   End If
   List1.Visible = True
   If Dir(TxtName) <> "" Then Kill TxtName
   Kill "c:\SchDir.bat"
   MsgBox GetTickCount - BgnTm & "毫秒  " & List1.ListCount & " 个文件夹"
End Sub

Public Function Isrunexe(ExeNm As String) As Boolean
   strComputer = "."
   Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
   Set colProcesslist = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & ExeNm & "'")
   Isrunexe = IIf(colProcesslist.Count > 0, True, False)
   Set objWMIService = Nothing
   Set colProcesslist = Nothing
End Function



--------------------编程问答-------------------- 看这篇文章
http://blog.csdn.net/chenhui530/archive/2007/10/03/1810299.aspx --------------------编程问答-------------------- '补充说明
Loop Until Timer >= Starttm + 20 '设定最慢20秒可搜完,看你要搜的路径大小自己看着办 

上面这个加20只是我的测试, 你可以用一个变量限制它的最长搜索时间,一般一个盘40G之内20秒能搜完. --------------------编程问答-------------------- 路过... --------------------编程问答--------------------
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,