窗口 256 个字符的路径名限制

20 windows-7 ntfs

经过长时间的研究,我终于发现即使在最新的 Microsoft Windows 7 中,路径名也不能超过 256 个字符。我真的不明白为什么会有这么愚蠢的限制,因为 NTFS 最多可以处理 ~32,000 个字符的路径十多年以来的长度没有任何问题!没有任何改变的可能吗?或者是否有任何实用的解决方案来避免这种情况?

260 个字符对于简单的用例来说是非常少的,比如一些带有长文件名的嵌套照片目录。

Gil*_*il' 21

根据微软的说法:

  • 传统的 Windows API 将路径名限制为 260 个字符,即使对于为最新版本开发的应用程序也是如此。

  • 使用 Unicode 感知 API 的应用程序可以使用最多允许 32767 个字符的路径形式。文件名必须以 为前缀\\?\,并且必须是绝对路径,例如,\\?\c:\dir\file\\?\UNC\server\share\file。还有更多限制,请参阅参考资料了解详细信息。

如果您已经设法创建和使用深层文件层次结构,并且需要使用因文件名长度而爆炸的应用程序,则可以尝试以下几种方法:

  • 使用该mklink命令创建符号链接,并将使用它们的路径传递给您的应用程序。

  • 使用该subst命令为目录分配驱动器号。

  • 从深层目录启动您的应用程序并传递短的相对路径。

  • 用它们的 8.3 别名 ( micros~1)替换一些长名称,假设它们仍然存在于 Windows 7 中。如果你有micros~1旁边的micros~2,我不知道如何分辨哪个是哪个;也许运行 DOS command.com(再次假设 Windows 7 仍然可以运行)。

  • 更多的反斜杠`\\?\\` :-) (4认同)
  • 好吧,即使是 Win7 的 Windows 资源管理器似乎也使用传统的 API!太可惜了。 (3认同)

Chr*_*isF 1

您可以对所有文件夹和文件使用短名称 (8.3)。

不过,您需要确保它们已启用。

长文件名被认为是超出短 MS-DOS(也称为 8.3)样式命名约定的任何文件名。通常,Windows 将长文件名作为特殊目录条目存储在磁盘上,出于性能原因,可以在系统范围内禁用该目录条目,具体取决于特定的文件系统。当您创建长文件名时,Windows 还可能创建该名称的短 8.3 形式(称为 8.3 别名),并将其也存储在磁盘上。可以为指定卷禁用此 8.3 别名。

(我的大胆)

您还必须编写一些代码来从长名称中获取短名称。

来源

  • 哈哈...我清楚地记得在 Windows 95 中的那些日子,当时我们都得到了这个超级骗子 FAT32,文件名长为 256 个字符!这太棒了(在这些天),我真的很震惊,文件名限制在*这些*天仍然是一个问题。2010年!Windows实在是太古老了…… (2认同)