Назад | Перейти на главную страницу

Окно Ограничение имени пути 256 символов

после долгого исследования я наконец обнаружил, что имена путей не могут быть длиннее 256 символов даже в последней версии Microsoft Windows 7. Я действительно не понимаю, почему существует такое глупое ограничение, поскольку NTFS может обрабатывать путь длиной до ~ 32000 символов длина без проблем уже больше десятка лет! Нет возможности это изменить? Или есть какие-то практические решения, чтобы этого избежать?

260 символов - это очень мало даже для простых случаев использования, таких как вложенные каталоги фотографий с длинными именами файлов.

Согласно Microsoft:

  • Традиционный Windows API ограничивает имена путей до 260 символов даже для приложений, разработанных для последней версии.

  • Приложения, использующие API с поддержкой Unicode, могут использовать форму пути, которая может содержать до 32767 символов. Имя файла должно начинаться с префикса \\?\, и должен быть абсолютным путем, например, \\?\c:\dir\file или \\?\UNC\server\share\file. Существуют и другие ограничения, подробности см. В справке.

Если вам удалось создать и использовать глубокую иерархию файлов и вам нужно работать с приложением, которое не работает из-за длины имени файла, вы можете попробовать следующее:

  • Использовать mklink команда для создания символические ссылки, и передайте путь, который использует их, в ваше приложение.

  • Использовать subst команда, чтобы назначить букву диска для каталога.

  • Запустите приложение из глубокого каталога и передайте ему короткие относительные пути.

  • Замените некоторые длинные имена их псевдонимами 8.3 (micros~1), если они все еще существуют в Windows 7. Если у вас micros~1 рядом micros~2, Я не знаю, как определить, что есть что; возможно запустить DOS command.com (опять же, при условии, что Windows 7 все еще может это делать).

Вы можете использовать короткие (8.3) имена для всех своих папок и файлов.

Вы должны убедиться, что они включены.

Длинным именем файла считается любое имя файла, которое превышает сокращенное соглашение об именах стиля MS-DOS (также называемое 8.3). Обычно Windows хранит длинные имена файлов на диске в виде специальных записей каталога, который можно отключить в масштабе всей системы по соображениям производительности в зависимости от конкретной файловой системы. Когда вы создаете длинное имя файла, Windows может также создать короткую форму имени 8.3, названную псевдонимом 8.3, и также сохранить ее на диске. Этот псевдоним 8.3 можно отключить для указанного тома.

(мой жирный)

Вам также придется написать код, чтобы получить короткое имя из длинного.

Источник

Имя файла / каталога в NTFS ограничено 255 кодовыми точками Unicode, поскольку длина хранится в байтах. Но нет никакого внутреннего предела полной длины пути.

Многие вызовы Win32 API (включая оболочку проводника) имеют ограничение длины 260-1. Некоторые другие вызовы имеют возможность использовать префикс \\? \ Для увеличения до 32 КБ (немного меньше, так как имя тома заменяется в Kernel-land)