分类:
2009-10-11 10:44:20
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 |