看看VB的FILESYSTEMOBJECT(简称FSO),你就会霍然开朗的

解决方案 »

  1.   

    这个是个老问题,不是很好解决的,特别是对文件名的分析,要自己写函数,
    至于获取文件名,可以用api
        
      Private   Declare   Function   GetFileTitle   Lib   "comdlg32.dll"   Alias   "GetFileTitleA"   (ByVal   lpszFile   As   String,   ByVal   lpszTitle  _ As   String,   ByVal   cbBuf   As   Integer)   As   Integer
      

  2.   

    取得指定目录下的文件列表,不包括子目录。Public Function GetFileList(ByVal Path As String) As Collection
        
        Dim strFile As String
        Dim objCol  As Collection
        
        Set objCol = New Collection
        
        If Right(Path, 1) <> "\" Then
            Path = Path & "\"
        End If
        
        strFile = Dir(Path & "*.*", vbSystem Or vbHidden)
        
        Do While Len(strFile) > 0
            objCol.Add Path & strFile
            strFile = Dir()
        Loop
        
        Set GetFileList = objCol
        
    End Function
      

  3.   

    Dim i As Long
    Dim strFilepath As String
    Dim objFolder As Folder
    Dim objSubFolder As Folder
    Dim fs As New FileSystemObject
    On Error GoTo ErrHandle
        DoEvents
        strFilepath = "d:\result\"
        Set objFolder = fs.GetFolder(strFilepath)
        '检索子目录
        If objFolder.SubFolders.Count > 0 Then
            For Each objSubFolder In objFolder.SubFolders
                For i = 1 To fileResult.ListCount
                    //todo here
                Next i
            Next
        End If
        Set objFolder = Nothing: Set objSubFolder = Nothing
    Exit Sub
    ErrHandle:
        Set objFolder = Nothing: Set objSubFolder = Nothing
      

  4.   

    MSComm1.InputMode = comInputModeBinary
      

  5.   

    Set f = fs.GetFolder(folderspec)
        Set fc = f.Files
        For Each f1 in fc
            s = s & f1.name 
            s = s & vbCrLf
        Next
      

  6.   

    修改一下容易看多了,指定目录下的文件列表,不包括目录。
    Public Sub ShowFileList(ByVal Path As String)
        Dim strFile As String
        If Right(Path, 1) <> "\" Then Path = Path & "\"
        strFile = Dir(Path,7)
        Do While Len(strFile) > 0
            objCol.Add Path & strFile
            debug.print Dir()
        Loop
    End Sub
      

  7.   

    上面有错误,没有修改好
    Private Sub Command1_Click()
        Dim strFile As String
        If Right(Path, 1) <> "\" Then Path = "D:\"
        strFile = Dir(Path, 7)
        Do
            Debug.Print CStr(strFile)
            strFile = Dir()
        Loop While Len(strFile) > 0
    End Sub
      

  8.   

    去这里搜索源码:VB->搜索“递归”;
    http://www.egooglet.com论坛交流:
    http://bbs.egooglet.com
      

  9.   

    有另外的处理方法。不过不知道你是否要把某目录下的所有文件都找出来?
    方法如下:
    1.定义一个动态数组,用于保存该目录下找到的子目录.数组上界决定保存多少个子目录.2.添加一个LISTBOX控件.用于保存找到的文件.(也同样可以用动态数组)
    3.搜索目标目录.
    4.当在目标目录中找到文件时,判断是不是文件夹.(可以用If (lpfindfiledata.dwFileAttributes >= 16 And lpfindfiledata.dwFileAttributes <= 22) OR LPFINDFILEDATA.DWFILEATTRIBUTES = &H10 Then来判断是不是文件夹)
    5.根据判断来决定把搜索结果保存在哪个地方.
    6.通过循环来遍历目标目录.(递归调用)
    这样就可以把目标目录中的所有文件搜索出来.通过结合WIN32_FIND_DATA中的属性和简单的判断..就可以过滤出想要的结果.如果数组是多维的,还可以储存相关信息用于再次过滤或比较.
    会用到FINDFIRSTFILE.FINDNEXTFILE.FINDCLOSE三个API
      

  10.   

    接上面的:
    1.关于判断里面的16, 22可以根据实际情况修改.(看操作系统了)
    2.记得过滤掉"."和"..",可以用这个RIGHT(STR,1) <> "."
    3.实际上就是把FINDFIRSTFILE用来做初始化搜索.根据句柄来调用FINDNEXTFILE.当以上中有一掉用后找不到任何文件时.FINDCLOSE关闭句柄.
    4.通过把数组1中的每个元素调用FINDFIRSTFILE.并根据句柄来循环调用FINDNEXTFILE.就可以把目标路径内的所有文件包括子目录和子目录中的所有文件全都搜索出来.
    5.结合WIN32_FIND_DATA和LPFINDFILEDATA.???.就可以找出你要的东西.
    6.如果只要某扩展名的文件.那么WIN32_FIND_DATA中的CFINENAME就可以满足你.
    三个API完成搜索.过滤.和比较.WIN32_FIND_DATA中包含了文件名.文件时间(创建,修改,访问).文件属性.文件大小等等多个元素.合理使用可以完成很多功能.
    需要源码么?:)