Private Sub Command1_Click()
Dim start_dir As String
Dim pattern As String
Dim file_list As String
    SizeLabel.Caption = ""
    ListText.Text = ""
    MousePointer = vbHourglass
    DoEvents
    
    start_dir = Trim$(StartText.Text)
    If Right$(start_dir, 1) = "\" Then _
        start_dir = _
            Left$(start_dir, Len(start_dir) - 1)
    pattern = Trim$(PatternText.Text)
    SizeLabel.Caption = Format$(ListFiles(start_dir, _
        pattern, file_list)) & " bytes"
    ListText.Text = file_list
    MousePointer = vbDefault
End Sub
' List all files below the directory that
' match the pattern.
Private Function ListFiles(ByVal start_dir As String, ByVal _
    pattern As String, file_list As String) As Double
Dim dir_names() As String
Dim num_dirs As Integer
Dim i As Integer
Dim fname As String
Dim full_name As String
Dim new_files As String
Dim attr As Integer
Dim total_size As Double
    ' Protects against such things as
    ' GetAttr("C:\pagefile.sys").
    On Error Resume Next
    
    ' Get the matching files in this directory.
    fname = Dir(start_dir & "\" & pattern, vbNormal)
    Do While fname <> ""
        full_name = start_dir & "\" & fname
        new_files = new_files & full_name & vbCrLf
        total_size = total_size + FileLen(full_name)
        fname = Dir()
    Loop
    file_list = file_list & new_files
    
    ' Optionally display the newlist here.
    
    ' Get the list of subdirectories.
    fname = Dir(start_dir & "\*.*", vbDirectory)
    Do While fname <> ""
        ' Skip this dir and its parent.
        attr = 0    ' In case there's an error.
        attr = GetAttr(start_dir & "\" & fname)
        If fname <> "." And fname <> ".." And _
            (attr And vbDirectory) <> 0 _
        Then
            num_dirs = num_dirs + 1
            ReDim Preserve dir_names(1 To num_dirs)
            dir_names(num_dirs) = fname
        End If
        fname = Dir()
    Loop
    
    ' Search the other directories.
    For i = 1 To num_dirs
        total_size = total_size + _
            ListFiles(start_dir & "\" & dir_names(i), _
                pattern, file_list)
    Next i
    ListFiles = total_size
End Function
               |