\\?\
是什麼導致僅在某些資料夾中的檔案路徑前出現無效字元 ( )?
無效的檔案路徑:
\\?\D:\computerfiles...
路徑無效的檔案無法在原始資料夾中開啟。
這些\\?\
字元僅在某些檔案位於原始位置時出現,但當檔案複製到其他資料夾時不會出現。
只有當我找到無法開啟的檔案(例如圖像)並且檢查屬性以檢測無效前綴時,我才會看到此內容
另外,如何找到所有具有無效前綴的路徑?
答案1
那不是非法字元。這是 Windows 關閉路徑調整的訊號。它允許您擁有比 更長的路徑MAX_PATH
。
按照命名檔案、路徑和命名空間:
Windows API 中的檔案 I/O 函數會將“/”轉換為“\”,作為將名稱轉換為 NT 樣式名稱的一部分,但使用“\\?\”前綴時除外,如以下各節所述。
Windows API 具有許多函數,這些函數也具有 Unicode 版本,以允許擴展長度路徑,最大路徑總長度為 32,767 個字元。這種類型的路徑由用反斜線分隔的元件組成,每個元件最多為 GetVolumeInformation 函數的 lpMaximumComponentLength 參數傳回的值(該值通常為 255 個字元)。若要指定擴展長度路徑,請使用“\\?\”前綴。例如,「\\?\D:\非常長的路徑」。
Windows 資源管理器似乎在某個時刻啟用了存取長路徑的功能。在此過程中,您可以在檔案/資料夾屬性頁的「位置」欄位中看到以下內容:
- 「常規」路徑(如果夠短)
- 8.3 名稱路徑(類似於
C:\WHATEV~1\...
),如果該檔案系統上存在 8.3 名稱且足夠短 - 否則延長路徑
tl;dr:你的路太長了。