克服 Windows 中的最大文件路径长度限制

克服 Windows 中的最大文件路径长度限制

我们的一个客户习惯使用非常长的路径名(几个嵌套的文件夹,名称很长),并且我们经常遇到“用户教育问题”,以便将路径缩短到少于 260 个字符。

是否有可用的技术解决方案,我们可以在 Windows 7 和 Windows 2008 R2 中轻轻拨动某种开关来表示“是的,忽略这些历史问题,并使 +260 个字符的路径名起作用”。

PS:我读过但完全没有受到启发命名文件、路径和命名空间

答案1

方法已经存在,但除非微软重新编码文件浏览器小部件,否则我们基本上只能继续面对这个老问题。虽然这不是最理想的方法,但这就是它的工作原理。

答案2

只是提到一个我还没有在这里提到过的技巧。

以此文件为例:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

此完整文件路径长度为 290 个字符。shell(Windows 资源管理器)和大多数命令行实用程序可能不允许您触碰它。

使用subst如下命令:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

现在您可以按如下方式访问(以及删除、移动等)该文件:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

现在文件名只有~235 个字符左右,因此您将不再遇到“文件名太长”的问题。

在 Windows API 中,有一个臭名昭著的常量,称为MAX_PATH。 MAX_PATH 为 260 个字符。 NTFS 文件系统实际上支持最多 32,767 个字符的文件路径。 而且,您仍然可以通过访问 Windows API 函数的 Unicode(或“宽”)版本以及在路径前加上 来使用 32,767 个字符长的路径名\\?\

MAX_PATH已经确定了很长在 Windows 世界中,这种情况已经很久了。我认为这与当时的 ANSI 标准有关……但这是微软现在很难改变的事情之一,因为现在我们有成千上万的程序和应用程序,包括一些微软自己编写的应用程序,MAX_PATH如果常数突然改变,它们就会以奇怪的新方式失败。(缓冲区溢出、堆损坏等)

答案3

您可以使用 \\?\C: 符号绕过此限制。虽然不太美观,但它支持的文件长度最大为 2^15。

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath

答案4

#If you are accessing files locally
get-childItem -LiteralPath \\?\e:\TopFolders\

#If you are accessing files through network Share
get-childItem -LiteralPath \\?\UNC\MyFileServerHostName\Share\

源链接

相关内容