含目录底下的子目录,求得其所有文件大小之总和其第二个叁数的目的是起始Static型态的totbyte, 呼叫它时,请不要传叁数进去 Private Sub Command1_Click() Dim tot As Long tot = GetDirTotalByte("c:/tools/") Debug.Print tot End Sub Private Function GetDirTotalByte(CurrentPath As String, Optional i As Long) As Long Static totbyte As Long Dim nI As Integer, nDirectory As Integer Dim sFileName As String, sDirectoryList() As String 注释:Initial totbyte, if it is not the Recursive call the function If i <> 1 Then totbyte = 0 End If 注释:First list all normal files in this directory sFileName = Dir(CurrentPath, vbNormal + vbHidden + vbReadOnly + vbSystem + vbArchive) Do While sFileName <> "" totbyte = totbyte + FileLen(CurrentPath + sFileName) sFileName = Dir Loop 注释:Next build temporary list of subdirectories sFileName = Dir(CurrentPath, vbDirectory) Do While sFileName <> "" 注释:Ignore current and parent directories If sFileName <> "." And sFileName <> ".." Then 注释:Ignore nondirectories If GetAttr(CurrentPath & sFileName) _ And vbDirectory Then nDirectory = nDirectory + 1 ReDim Preserve sDirectoryList(nDirectory) sDirectoryList(nDirectory) = CurrentPath & sFileName End If End If sFileName = Dir Loop 注释:Recursively process each directory For nI = 1 To nDirectory GetDirTotalByte sDirectoryList(nI) & "/", 1 Next nI GetDirTotalByte = totbyte End Function  
|