help

解决方案 »

  1.   


        取得某个目录底下所有文件大小总和 
     
     含目录底下的子目录,求得其所有文件大小之总和
    其第二个叁数的目的是起始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