В Windows общая длина пути по умолчанию не должна превышать 260 символов ( drive
+ :\
+ 255 characters of filename
+ null terminator
+, вероятно, для окончательного \
в случае, если путь является каталогом или просто для равномерного округления). Это был пережиток эпохи DOS с 8.3 именами, когда путь из 260 символов - это действительно глубокий путь.
Возможно, ваш путь к папке был уже очень длинным, поэтому оставшаяся часть для вашего имени файла - просто 129. Если вы хотите более длинный путь, у вас есть несколько решений:
- используйте полные имена файлов с
\\?\
префиксом, таким образом вы можете использовать максимум 32767 символов в пути ‡
- переименуйте папки в пути, чтобы сделать его короче
- Смонтируйте папку, содержащую файл, в символ диска с помощью
subst
/ mountvol
/ diskmgmt.msc . Таким образом, вы можете использовать максимум 255 символов для вашего имени файла
- создайте соединение / символическую ссылку на другую более мелкую папку на пути. Вы не можете создавать ссылки на буквы дисков, следовательно, вы не можете получить имена файлов, если вы использовали метод монтирования
Начиная с Windows 10 , есть еще один вариант , путем удаления ограничения MAX_PATH § . Вы можете включить его, установив HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled
в реестре или выбрав Конфигурация компьютера> Административные шаблоны> Система> Файловая система> Включить длинные пути NTFS в групповой политике.
Подробнее:
‡ Максимальный путь в 32 767 символов является приблизительным, поскольку \\?\
префикс может быть расширен системой до более длинной строки во время выполнения, и это расширение применяется к общей длине.
§ Начиная с Windows 10, версия 1607, MAX_PATH
ограничения были удалены из общего файла Win32 и функций каталога. Тем не менее, вы должны подписаться на новое поведение.