我们发现长文件名存在问题,通常在“我的文档”或共享驱动器上。
基本上,似乎可以编写一个文件名很长的文档,并保存在“我的文档”中。在那台计算机上没问题,文档是“我的文档\verlylongfilename”。
当您到达存储文件的服务器时会出现问题,并且路径更改为“e:\All Users\Staff Folders\JSmith\verylongfilename”,这会将字符数推高到资源管理器可以执行的任何操作。
我发现“删除”或重命名这些文件的唯一方法是映射到文件夹,但如果你想移动一组文件夹,那完全没有意义。
这只是我们必须忍受和修复的限制,还是有其他方法可以访问这些文件,甚至阻止原始用户保存超过 30 个字符的文件名?可能是 GPO 设置?
NTFS 文件系统支持最多约 32767 个 Unicode 字符的路径,每个路径组件(目录或文件名)最长为 255 个字符。但 Windows 资源管理器和大多数其他 Win32 应用程序仅支持路径中的 255 个字符。
您可以使用robocopy,这是 Microsoft 提供的免费工具,完全支持长路径名(超过 256 个字符)。这里记录了如何使用 robocopy 列出所有开关和选项。
这是 MSDN 上文章的摘录,它解释了为什么许多程序将路径限制为 255 个字符:
见http://www.ratsauce.co.uk/notablog/LongFileNames.asp
这是 Windows NT 系列中最愚蠢的设计决策之一。据我所知,没有办法阻止用户创建长文件名。
JR
在组和家庭驱动器上自动进行一些参数化清除时,我遇到了类似的问题。
我编写了一个自定义 C# 应用程序来执行此操作,但要处理长文件名,必须使用 Win32 api 的 Unicode 版本,而不是具有上述限制的通常 Ascii 版本。这也意味着路径字符串的前缀是 \?\(如果它是映射的)或 \?\UNC\(如果它是通过 UNC)。
如果你愿意,我可以给你一些代码示例或更多信息。