0

我在 Microsoft Access 2003 中使用了 DIR() 命令来遍历文件夹 A 中的文件。这工作正常,但我需要检查每个文件是否也存在于另一个位置(文件夹 B),如果它只处理文件文件夹 B 中不存在。

问题是检查文件夹 B 中存在的文件也使用 DIR() 函数,然后重置或混淆原始文件,结果在文件夹 A 中找不到更多文件。

有没有办法在不使用 DIR 的情况下检查文件是否存在?

或者,有没有办法拥有一个单独的 DIR 实例?

我想我可以将文件夹 A 中的文件列表构建到一个数组中,然后处理数组中的条目,但这似乎相当“笨拙”

对更好的解决方案有什么建议吗?

谢谢

4

2 回答 2

0

根据您的操作系统和要求,您可能会发现搜索 SystemIndex 很有用。这里有一些注意事项。

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String

''This is the Windows Search connection string to use
cn.Open "Provider=Search.CollatorDSO;" _
    & "Extended Properties='Application=Windows';"

''SQL SELECT  statement specifies what properties to return,
''            you can add more if you want
''    FROM -  use SystemIndex for a local query or
''            MACHINENAME.SystemIndex for remote
''    WHERE - specify restrictions including SCOPE and other
''            conditions that must be true

''To add scope restriction:
''strSQL = "SELECT System.ItemName, System.ItemTypeText, " _
''       & "System.Size FROM SystemIndex " _
''       & "WHERE Scope='file:c:\Users\'"

strSQL = "SELECT System.ItemName, System.ItemTypeText, " _
       & "System.Size, System.ItemFolderPathDisplay " _
       & "FROM SystemIndex " _
       & "WHERE System.ItemName='AnExampleFile.mdb'"

rs.Open strSQL, cn
rs.MoveFirst

Do Until rs.EOF
    Debug.Print rs.Fields.Item("System.ItemName")
    Debug.Print rs.Fields.Item("System.ItemTypeText")
    Debug.Print rs.Fields.Item("System.Size")
    Debug.Print rs.Fields.Item("System.ItemFolderPathDisplay")
    Debug.Print String(30, "-")
    rs.MoveNext
Loop

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

更多信息: http:
//msdn.microsoft.com/en-us/library/bb266517 (VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb419046(v=VS.85 ).aspx
http://msdn.microsoft.com/en-us/library/bb776859(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb231297(v=VS .85).aspx

于 2010-04-30T10:04:22.073 回答
0

我更喜欢文件 API,因为我不太信任 FSO。另请参阅FindFirstFile:性能比较 - FSO 与 API 少于一百个文件,性能差异并不显着。大量示例代码可用于文件 API 例程中的直接文件列表或递归遍历子文件夹

于 2010-05-02T03:48:26.790 回答