Имя файла слишком длинное (только для Windows Explorer)

6

Когда я копировал структуру каталогов в новое место, где имя целевой папки было немного длиннее исходного, я обнаружил следующую ошибку, указывающую, что имя файла было слишком длинным.

Интересно, что затем я использовал приложение Beyond Compare от Scooter Software, чтобы сравнить исходную папку с целевой папкой, чтобы определить файлы, которые не удалось скопировать. Я был удивлен, обнаружив, что BC удалось скопировать файлы в целевую папку, поэтому обе папки соответствовали 100%.

Я думаю, что имя файла было 258 символов. Ранее, основываясь на сообщениях об ошибках, которые я, вероятно, видел в проводнике Windows, я думал, что Windows имеет ограничение в 255 символов для имен файлов, включая путь. Так как я смог скопировать следующее имя файла из 258 символов с помощью Beyond Compare, похоже, это не так.

Есть ли ограничение длины имени файла Windows? Почему максимальная длина Windows Exploere 255?

Мне кажется, что ограничение «имя слишком длинное» было

C:\Expand\tfs2010\Healthcare-Finance_IT\Main\MLR Rebates Web Services\Load_MLR_REBATE_IBOR_INFO\Load_MLR_REBATE_IBOR_INFO\Service References\IborServiceReference\Load_MLR_REBATE_IBOR_INFO.IborServiceReference.locateProfileBySourceSystemIdResponse.datasource

введите описание изображения здесь

Чад
источник

Ответы:

4

Базовая файловая система Windows, NTFS, является гораздо более гибкой, чем это делает устаревшая подсистема Win32 (win32k.sys). При непосредственном доступе к NTFS и обходе оболочки Windows появляется множество интересных возможностей, например, наличие файлов в одном каталоге, имена которых отличаются только регистром (например, C: \ Users \ hi vs. C: \ Users \ HI). Ограничения длины пути к файлу являются еще одним из этих устаревших ограничений, которые относятся к Windows 95 или более ранней версии (возможно, даже DOS). Beyond Compare, по-видимому, обходит Windows Shell, что очень разумно сделать для надежной программы копирования файлов.

Смотрите здесь для официального ответа Microsoft.

allquixotic
источник
2
ваша ссылка ... версия для конечного пользователя и не предоставляет "целую" историю: msdn.microsoft.com/en-us/library/windows/desktop/… .. короче, если OP будет использовать unc-paths Исследователь также сможет получить доступ к файлам / скопировать их, потому что тогда он переключится на unicode-версию файла api, которая устанавливает ограничение в 32 КБ для имени файла.
Акира
@akira: Проводник Windows (по крайней мере до Win10) не поддерживает синтаксис пути UNC, поэтому, к сожалению, его нельзя использовать в качестве обходного пути.
Malvineous
@ Зловещий это делает. \\?\C:\Usersнапример, работает безупречно, даже в Win7-WindowsExplorer.
Акира
@akira: Это «работает», но только потому, что Explorer преобразует его обратно в нотацию старого стиля. Попробуйте создать путь к папке длиной более 260 символов, и вы увидите, что даже если поместить его \\?\на передний план, вы не сможете получить к нему доступ в Проводнике.
Malvineous