Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub Listfiles(ByVal mydir As String)
Dim x As String
Open "C:\test.bat" For Output As 1
Print #1, "cmd.exe/c dir " & mydir & "\*.* /s> c:\temp.txt"
Close 1
Shell "c:\test.bat"
Open "c:\temp.txt " For Binary As #1
x = Space(LOF(1))
Get #1, , x
Close #1
Debug.Print x
Kill "c:\temp.txt"
Kill "c:\test.bat"
End Sub
Private Sub Command1_Click()
Listfiles "c:\windows\system"
End Sub
Sub Listfiles(ByVal mydir As String)
Dim n As Integer, dirlevel As Integer, fname As String, dirlist() As String, num As Long
num = 0
mydir = IIf(Right(mydir, 1) = "\", mydir, mydir & "\")
fname = Dir(mydir)
Do While fname <> ""
Debug.Print mydir & fname
num = num + 1
fname = Dir
Loop
fname = LCase(Dir(mydir, vbDirectory))
Do While fname <> ""
If fname <> "." And fname <> ".." Then
If GetAttr(mydir & fname) And vbDirectory Then
dirlevel = dirlevel + 1
ReDim Preserve dirlist(dirlevel)
dirlist(dirlevel) = mydir & fname
End If
End If
fname = Dir
DoEvents
Loop
For n = 1 To dirlevel
Listfiles dirlist(n) & "\"
Next
MsgBox "目录 " & mydir & " 共有 " & num & " 个文件"
End Sub
Private Sub Command1_Click()
Listfiles "c:\windows\system"
End Sub