我正在使用Microsoft Scripting Runtime (FSO)来解析文件夹并生成其所有内容的列表,这些文件夹位于网络上,导致路径最终超过了260个字符。我所拥有的最少代码如下:
Private Sub ProcessFolder(ByVal StrFolder As String)
Dim Fl As File
Dim Fldr As Folder
Dim RootFldr As Folder
Set RootFldr = FS.GetFolder(StrFolder)
For Each Fl In RootFldr.Files
Debug.Print Fl.Path
Next
For Each Fldr In RootFldr.SubFolders
DoEvents
ProcessFolder Fldr.Path
Next
Set RootFldr = nothing
End sub
在某个级别上,
StrFolder
的长度变为259,Set RootFldr ...
文件夹行可以工作,但是For Each Fl In RootFldr.Files
会报错76: Path not found
,可能是因为内容导致路径超过260个字符的限制。在Windows资源管理器中查看时,文件夹中有文件。我使用Excel作为代码的主机,因为我要将结果输出到工作簿中。
为了更清楚地阐明我的问题及其背景,我需要使用FSO(如果存在替代方法,我很乐意展示)来访问它们在网络路径上深度超过260个字符的文件。我需要使用FSO,因为我拥有的工具需要文件夹路径和文件路径、名称、大小和创建时间等信息。
shortpath
来解决它。它破坏了路径(使其不可读/不可用),但我认为我可以编写一些代码来修复它。 - Gary EvansPUSHD
和POPD
,因为命令的DIR
非常优化用于搜索目录(比使用FSO快得多)。然而,一旦我看到Hans的答案,这就没有意义了。他的方法要好得多。 - Tim