什么原因导致无效字符(\\?\
)仅出现在某些文件夹中的文件路径前?
文件路径无效:
\\?\D:\computerfiles...
路径无效的文件无法在原文件夹中打开。
这些\\?\
字符仅在某些文件中位于原始位置时出现,但是当文件被复制到其他文件夹时,它们不会出现。
我仅当我找到无法打开的文件(例如图像)并检查属性以检测无效前缀时才会看到此信息
另外,我如何才能找到所有具有无效前缀的路径?
答案1
那不是非法字符。这是 Windows 关闭路径重整的信号。它允许您拥有比 更长的路径MAX_PATH
。
按照命名文件、路径和命名空间:
Windows API 中的文件 I/O 函数将“/”转换为“\”,作为将名称转换为 NT 样式名称的一部分,但使用“\\?\”前缀时除外,如下节所述。
Windows API 中有许多函数也有 Unicode 版本,允许扩展长度的路径,最大路径总长度为 32,767 个字符。这种类型的路径由用反斜杠分隔的组件组成,每个组件的长度不超过 GetVolumeInformation 函数的 lpMaximumComponentLength 参数返回的值(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\very long path”。
看来 Windows 资源管理器在某些时候可以访问长路径。在此过程中,您可以在文件/文件夹的属性页上的“位置”字段中看到以下内容:
- “常规”路径(如果足够短)
- 8.3 名称路径(类似于
C:\WHATEV~1\...
),如果此文件系统上存在 8.3 名称,并且足够短 - 否则延长路径
tl;dr:你的路径太长了。