我们正在将用户从 OSX 迁移到 Windows 10。在 Mac 上,用户的路径长度从未受到限制,因此随着时间的推移,他们创建的许多文件/目录结构超出了 Windows 上授权的最大值。
未来,用户将不得不面对 Windows 在 2017 年仍实施的这一(愚蠢的)限制。但目前最大的问题是当我必须将他们的数据从旧 Mac 移动到新 PC 时。当 Windows 发现文件路径太长时,我会收到错误。
我启用了 GPO 策略启用 win32 长路径,但这没有帮助。我认为微软修复了 Windows API,但没有修复他们的应用程序,例如 Windows 资源管理器。
我发现激光多普勒超声诊断仪实用程序。它会扫描文件树并报告超出最大允许长度的文件。然后用户必须重命名或删除他们的文件。非常耗时!
我还发现长路径修复器实用程序。它应该允许复制路径长度过长的文件,但我没能使用它。它很慢,最后就崩溃了。
您有更好的解决方案吗?
答案1
我会尝试使用 robocopy 进行传输,它通常能很好地绕过这个限制。不过,完成后请仔细查看它是否自动截断了任何名称。
https://technet.microsoft.com/en-us/library/cc733145(v=ws.11).aspx
您还需要在 Mac 上将其删除之前验证 Explorer 和应用程序是否能够达到这些较长的文件长度。
编辑:至于在复制这些文件后如何访问它们……这是 Windows API 限制的作用。如果它们相对不常见,您可以使用扩展长度的前缀或替换来跳转到这些路径……
https://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
https://technet.microsoft.com/en-us/library/bb491006.aspx
如果它们很常见以至于手动解决方法很麻烦,那么我建议在 Robocopy 作业上尝试 /FAT 参数。我从未使用过它,但它似乎使用 8.3 命名方案,这可能会自动为您截断这些路径;但不确定这是否会导致其他问题。另一种选择是,如果这些机器是 Windows 10,您可以启用注册表项来绕过 Explorer 中的限制(请参阅上面的 MSDN 文章)。