什么原因导致文件路径前出现无效字符(\\?\)?

什么原因导致文件路径前出现无效字符(\\?\)?

什么原因导致无效字符(\\?\)仅出现在某些文件夹中的文件路径前?

文件路径无效:

\\?\D:\computerfiles...

路径无效的文件无法在原文件夹中打开。

这些\\?\字符仅在某些文件中位于原始位置时出现,但是当文件被复制到其他文件夹时,它们不会出现。

我仅当我找到无法打开的文件(例如图像)并检查属性以检测无效前缀时才会看到此信息

另外,我如何才能找到所有具有无效前缀的路径?

答案1

那不是非法字符。这是 Windows 关闭路径重整的信号。它允许您拥有比 更长的路径MAX_PATH

按照命名文件、路径和命名空间

Windows API 中的文件 I/O 函数将“/”转换为“\”,作为将名称转换为 NT 样式名称的一部分,但使用“\\?\”前缀时除外,如下节所述。

Windows API 中有许多函数也有 Unicode 版本,允许扩展长度的路径,最大路径总长度为 32,767 个字符。这种类型的路径由用反斜杠分隔的组件组成,每个组件的长度不超过 GetVolumeInformation 函数的 lpMaximumComponentLength 参数返回的值(该值通常为 255 个字符)。要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\very long path”。

看来 Windows 资源管理器在某些时候可以访问长路径。在此过程中,您可以在文件/文件夹的属性页上的“位置”字段中看到以下内容:

  1. “常规”路径(如果足够短)
  2. 8.3 名称路径(类似于C:\WHATEV~1\...),如果此文件系统上存在 8.3 名称,并且足够短
  3. 否则延长路径

tl;dr:你的路径太长了。

相关内容