我想编写一个VB脚本:
列出名为“abc”的所有文件夹,以及共享驱动器\ share1
中的内容目前名为“abc”的这些文件夹位于\ share1中的所有位置,但它们都具有相同的名称。
我遇到的问题是其中一些路径是长路径,因此通过PowerShell进行此操作非常困难,因为它一直达到260的限制。
答案 0 :(得分:2)
使用\\?\
前缀路径允许最多32,000个字符的路径。这允许应用程序在大多数程序崩溃时选择使用非常长的文件名。现在,它取决于如果组件允许您访问文件功能的方式。 CMD支持这一点。
所以命令行
for /f %A in ('dir c:\windows\abc /s /b /ad') do dir "\\?\%A"
\\?\
也适用于unc路径。
for /f %A in ('dir \\?\c:\windows\abc /s /b /ad') do dir "%A"
答案 1 :(得分:0)
我认为RoboCopy(Windows实用程序)是您最好的选择。这可以处理长路径名,它实际上可以用来列出文件,而不是复制它们,方法是使用
/L option
(:仅限列表 - 不要复制,添加时间戳或删除任何文件。)
http://ss64.com/nt/robocopy.html提供了所有选项的完美摘要。
您也可以为它下载一个GUI,这可能会使它更容易使用。
答案 2 :(得分:0)
另一个选择是通过subst
缩短路径:
subst X: C:\very\...\long\...\path