用FSO  递归扫描磁盘找出所用*.mp3  文件

解决方案 »

  1.   

    用 Dir 递归扫描磁盘找出所用*.mp3  文件 
      

  2.   

    算你运气好,我最近刚好写了一段枚举文件的代码,用的时候别忘了我呀:)
    ''''''''''''''''''''''''''''''''''''''''''''''''
    'author:dah
    'date:2001.3.15
    'usage:for emumate all files in a directory
    ''''''''''''''''''''''''''''''''''''''''''''''''
    '用来去处给定字串的C语言后缀,即'\0'字符
    Public Function TrimZeroSuffix(ByVal zeroString As String) As String
    Dim RetStr As String
    Dim i As Integer
    RetStr = ""
    i = 1
    Do While i <> Len(zeroString)
         If Mid(zeroString, i, 1) <> Chr(0) Then
           RetStr = RetStr & Mid(zeroString, i, 1)
        Else
           Exit Do
        End If
      i = i + 1
    Loop
    TrimZeroSuffix = RetStr
    End Function'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   Used for find files
    '
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
    Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As LongPublic Const MAX_PATH = 260  'Defined in stdlib.h
    ''''''''''''''''''''''''''''''''''''''''''
    'Defined in Mapi.h
    Public Const FILE_ATTRIBUTE_READONLY = 1&
    Public Const FILE_ATTRIBUTE_HIDDEN = 2&
    Public Const FILE_ATTRIBUTE_SYSTEM = 4&
    Public Const FILE_ATTRIBUTE_DIRECTORY = 16&
    Public Const FILE_ATTRIBUTE_ARCHIVE = 32&
    Public Const FILE_ATTRIBUTE_NORMAL = 128&
    Public Const FILE_ATTRIBUTE_TEMPORARY = 256&
    ''''''''''''''''''''''''''''''''''''''''''
    Public Type FILETIME ' 8 Bytes
    dwLowDateTime As Long
    dwHighDateTime As Long
    End TypePublic Type WIN32_FIND_DATA
      lFileAttributes As Long
      ftCreationTime As FILETIME
      ftLastAccessTime As FILETIME
      ftLastWriteTime As FILETIME
      nFileSizeHigh As Long
      nFileSizeLow As Long
      lReserved0 As Long
      lReserved1 As Long
      cFileName As String * MAX_PATH
      cAlternateFileName As String * 14
    End Type'rec 为全局数据集,在使用该函数时,应该先打开数据库并赋予rec适当的数据集'在VB中好像无法通过传进作为函数地址的参数(不知addressof操作符可行否)
    '但在C++中就可以,因为它有函数指针
    '给于的pathname应该是这种形式的("c:")Public Sub Emufiles(ByVal Pathname As String, ByVal ID As Long)
    Dim SearchName As String
    Dim Find_Data As WIN32_FIND_DATA
    Dim lhandle, Ret As Long
    SearchName = Pathname & "\*.*"
    lhandle = FindFirstFile(SearchName, Find_Data)
    Ret = lhandleDo While Ret <> 0
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'handle the file here
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If (Find_Data.lFileAttributes And FILE_ATTRIBUTE_DIRECTORY) <> 0 Then
        
            If (Left(Find_Data.cFileName, 1) <> ".") Then        'is a directory
            'Debug.Print Pathname & "\" & TrimZeroSuffix(Find_Data.cFileName) & "\"
            'handle it here        
            Call Emufiles(Pathname & "\" & TrimZeroSuffix(Find_Data.cFileName), ID)
            End If
     
        Else
        'is a file
        'handle the file here
            'Debug.Print Pathname & "\" & TrimZeroSuffix(Find_Data.cFileName)
        End If
        Ret = FindNextFile(lhandle, Find_Data)
    LoopFindClose (lhandle)
    End Sub
      

  3.   

    对了,你用的时候要把TrimZeroSuffix函数扔到emufiles函数后面,因为declare要在最前面.