阿杰 发表于 2010-8-8 15:12: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
页: [1]
查看完整版本: 取得某个目录下所有文件大小的总和