路徑長度在 D: 磁碟機上正常,但對於具有 NTFS 的 C: 磁碟機來說太長?

路徑長度在 D: 磁碟機上正常,但對於具有 NTFS 的 C: 磁碟機來說太長?

我有一個包含大量文件的資料夾D:\dev\tools\eclipse。為了提高速度,我決定將其移至我的C:驅動器(同一路徑),因為它C:是 SSD。

拖放操作拒絕複製 4 個名稱超長的文件,稱它們太長。

  • 作業系統是Windows 7 Pro X64
  • C:是250GB SSD
  • D:位於 LSI 9260 硬體 RAID 卡上,其中 3 個 2TB 硬碟配置為 RAID-5(3.6 TB 有效容量)
  • C:都是D:NTFS 格式。

為什麼相同的路徑長度在 RAID 磁碟機上可以,但在 SSD 上卻不行?

附加資訊:

如果我在檔案上使用「複製為路徑」上下文選單項目(Shift-右鍵單擊),則會在D:其上複製一個以 8.3 短名稱取代長度超過 8 個字元的路徑元素的路徑,而在C:其上則使用全名。

但是,fsutil顯示兩個磁碟機都啟用了 8.3 名稱

C:\Windows\system32>fsutil 8dot3name query c:
The volume state for Disable8dot3 is 0 (8dot3 name creation is enabled).
The registry state of NtfsDisable8dot3NameCreation is 2, the default (Volume level setting).
Based on the above two settings, 8dot3 name creation is enabled on c:.

C:\Windows\system32>fsutil 8dot3name query d:
The volume state for Disable8dot3 is 0 (8dot3 name creation is enabled).
The registry state of NtfsDisable8dot3NameCreation is 2, the default (Volume level setting).
Based on the above two settings, 8dot3 name creation is enabled on d:.

它們的配置相同,因此仍然存在一個問題:為什麼 Windows 在其中一個中使用 8.3 名稱,而在另一個中則不使用。

答案1

NTFS 本身的最大檔案路徑長度為 32,767 個字元/位元組。

它是Windows API 的字元數限制為 260 個(路徑為 256 個字符,加上驅動器號、冒號、斜杠和尾隨 EOL/NUL 的 4 個字符),因此您(最有可能)用來複製文件的系統實用程序採用該長度,這就是失敗。

有關如何在 Windows 中成功複製長檔案路徑的建議,請查看以下現有的 SU 問題:

相關內容