2008-03-17/16:58
含目录底下的子目录,求得其所有文件大小之总和
其第二个叁数的目的是起始Static型态的totbyte,呼叫它时,请不要传叁数进去
Private Sub Command1_Click()
Dim tot As Long
tot=GetDirTotalByte("c:\tools\")
Debug.Printtot
End Sub
Private Function GetDirTotalByte(CurrentPath As String,Optionali As Long) As Long
Statictotbyte As Long
Dim nI As Integer,nDirectory As Integer
Dim sFileName As String,sDirectoryList() As String
注释:Initialtotbyte,ifitisnottheRecursivecallthefunction
If i<>1 Then
totbyte=0
End If
注释:Firstlistallnormalfilesinthisdirectory
sFileName=Dir(CurrentPath,vbNormal+vbHidden+vbReadOnly+vbSystem+vbArchive)
Do While sFileName<>""
totbyte=totbyte+FileLen(CurrentPath+sFileName)
sFileName=Dir
Loop
注释:Nextbuildtemporarylistofsubdirectories
sFileName=Dir(CurrentPath,vbDirectory)
Do While sFileName<>""
注释:Ignorecurrentandparentdirectories
If sFileName<>"." And sFileName<>".." Then
注释:Ignorenondirectories
If GetAttr(CurrentPath&sFileName)_
And vbDirectory Then
nDirectory=nDirectory+1
ReDimPreservesDirectoryList(nDirectory)
sDirectoryList(nDirectory)=CurrentPath&sFileName
End If
End If
sFileName=Dir
Loop
注释:Recursivelyprocesseachdirectory
For nI=1 To nDirectory
GetDirTotalBytesDirectoryList(nI)&"\",1
Next nI
GetDirTotalByte=totbyte
End Function