文件名太长(仅适用于 Windows 资源管理器)

Iva*_*van 7 windows-7

当我将目录结构复制到目标文件夹名称比源文件夹名称稍长的新位置时,遇到以下错误,表明文件名太长。

有趣的是,我随后使用 Scooter Software 的 Beyond Compare 应用程序将源文件夹与目标文件夹进行比较,以识别无法复制的文件。我惊讶地发现 BC 能够将文件复制到目标文件夹,因此两个文件夹都 100% 匹配。

我认为有问题的文件名有 258 个字符长。以前,根据我可能在 Windows 资源管理器中看到的错误消息,我认为Windows对文件名(包括路径)有 255 个字符的限制。由于我能够使用 Beyond Compare 复制以下 258 个字符的文件名,因此情况似乎并非如此。

Windows 文件名长度有限制吗?为什么 Windows Exploere 的最大长度是 255?

在我看来,“名称太长”限制是

C:\Expand\tfs2010\Healthcare-Finance_IT\Main\MLR Rebates Web Services\Load_MLR_REBATE_IBOR_INFO\Load_MLR_REBATE_IBOR_INFO\Service References\IborServiceReference\Load_MLR_REBATE_IBOR_INFO.IborServiceReference.locateProfileBySourceSystemIdResponse.datasource
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

all*_*tic 4

Windows 的底层文件系统 NTFS 比传统 Win32 子系统 (win32k.sys) 所认为的要灵活得多。通过直接访问 NTFS 并绕过 Windows Shell,会出现许多有趣的可能性,例如同一目录中的文件名称仅大小写不同(例如 C:\Users\hi 与 C:\Users\HI)。文件路径长度限制是这些遗留限制之一,可以追溯到 Windows 95 或更早版本(甚至可能是 DOS)。Beyond Compare 似乎绕过了 Windows Shell,对于一个强大的文件复制程序来说,这确实是一件非常明智的事情。

请参阅此处微软官方的答复。

  • 您的链接是...最终用户版本,不提供“完整”故事:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85)。 aspx .. 简而言之,如果 OP 使用 unc-paths 资源管理器也能够访问/复制文件,因为这样它将切换到文件 api 的 unicode 版本,这会对文件名设置 32k 的限制。 (2认同)