
Microsoft Windows: пример дерева папок в Проводнике. Полный путь складывается из корня, всех уровней, имени и расширения; допустимая глубина зависит также от программы.
© Microsoft. Used with permission from Microsoft. · источник и условия использования · Microsoft screenshot permissions
Архив распаковывается с ошибкой длинного пути, хотя в Windows уже включены длинные имена. Или один инструмент копирует папку, а Проводник не может её переименовать. Такие ситуации возможны: поддержку пути определяют несколько слоёв.
Классический предел MAX_PATH равен 260 символам с учётом завершающего нулевого символа. Для ряда Unicode-интерфейсов Windows предусмотрены расширенные пути, но поведение программы зависит от используемых API и её настроек. NTFS, оболочка и конкретное приложение не являются одним механизмом. [1], [2]
Задача — установить самый строгий предел в вашей операции. Изменение одного параметра реестра не обновляет старый архиватор и не убирает собственный лимит базы данных или синхронизации.
Схема редакции «Мы из 90х».
В длину входят буква диска или сетевой корень, разделители, все родительские каталоги, пробелы, имя и расширение. Короткий файл в глубоком дереве может не помещаться из-за длинной папки назначения.
Если полный путь уже известен из сообщения или описи, его строковую длину можно оценить без обращения к файлу:
PowerShell: замените строку своим полным путём
$targetPath = 'C:\Work\Проект\Архив\Документы\пример.txt'
$targetPath.LengthЭто длина заданной строки, а не проверка существования или совместимости файла. У программы могут быть собственные правила и дополнительные временные имена. При работе с архивом учитывайте длину выбранного каталога распаковки плюс путь внутри архива.
Не путайте ошибку длины с недопустимым символом, зарезервированным именем или отсутствием разрешения. Полный текст отказа важнее общего предположения «Windows не любит длинные названия».
В командной строке запросите текущее значение:
Командная строка
reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabledОтсутствие значения и значение 0 — разные исходные состояния, которые стоит сохранить перед изменением. Для снятия классического ограничения у соответствующих Win32-функций Microsoft указывает два условия: настройку Windows и объявление longPathAware в манифесте приложения. [1]
Проверьте документацию своей версии программы. Наличие современной Windows само по себе не добавляет отсутствующую поддержку в старый EXE. Настройка также не отменяет ограничения каждого облачного сервиса и формата данных.
| Условие | Что уточнить |
|---|---|
| Windows настроена, старый EXE не готов | Поддержку longPathAware и используемые API |
| Проводник и другой инструмент ведут себя по-разному | Ограничения оболочки |
| Длинно одно имя | Предел компонента, а не общего пути |
| Сбой только при сохранении | Временные имена и собственные правила программы |
Учебная таблица редакции.
Если нужное приложение поддерживает этот режим и изменение разрешено на вашем компьютере, в повышенной CMD можно выполнить:
Командная строка
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /fНа редакциях с редактором локальных групповых политик соответствующий параметр находится в «Конфигурация компьютера» → «Административные шаблоны» → «Система» → «Файловая система» → Enable Win32 long paths. На управляемом ПК настройка может задаваться централизованно.
Значение кэшируется процессами, поэтому для полного применения может потребоваться перезапуск программ и Windows. [1] После изменения проверяйте именно исходную задачу.
Для возврата восстановите прежнее значение. Если параметра изначально не было, убирают только созданное значение LongPathsEnabled, а не весь раздел FileSystem. Само изменение настройки не переименовывает уже созданные файлы.
Для поддерживающих его Unicode-API используется префикс расширенного пути. Примеры формы записи:
Примеры синтаксиса пути, не команды
\\?\D:\Archive\folder\file.txt
\\?\UNC\server\share\folder\file.txtТакая запись передаёт путь с особыми правилами обработки. Она не предназначена для произвольной подстановки в любое окно программы и не применяется к относительному пути как обычное дополнение. Поддержка проверяется для конкретного API. [1], [2]
Даже расширенный полный путь не делает длину одного имени неограниченной. Для распространённых файловых систем действует отдельный предел компонента, часто 255 символов; точное значение зависит от файловой системы. Не пытайтесь исправить слишком длинное одно имя только добавлением префикса.
Для распаковки можно выбрать короткую отдельную папку вроде C:\Work вместо вложенного каталога в длинном профиле пользователя. Это уменьшает добавляемую часть пути без массового изменения имён внутри архива.
Для уже существующего дерева сначала сделайте проверяемую копию в короткое назначение поддерживающим длинные пути инструментом. При переименовании уровней учитывайте ссылки в проектах, базах и плейлистах. Несколько разных имён после грубого обрезания могут превратиться в одинаковые.
Проверяйте не только копирование, но и открытие файла той программой, ради которой перенос выполняется. Возможность создать путь одним инструментом не гарантирует совместимость рабочего приложения.
Схема редакции «Мы из 90х».
Если выбран Robocopy, учитывайте параметр /256: он отключает поддержку путей длиннее 256 символов. Его нельзя добавлять в такой сценарий по чужому шаблону, ожидая расширения возможностей. После копирования всё равно проверяется совместимость рабочего приложения. [4]
Локальный путь может включать название организации, библиотеки и пользователя, которых не видно в коротком веб-адресе. Поэтому файл, нормально открывающийся в браузере, способен оказаться проблемным после синхронизации.
Сервисы и приложения устанавливают собственные пределы. Microsoft описывает такие различия для OneDrive, SharePoint и Office отдельно. [3] Не заменяйте все эти правила одним числом 32 767.
Редактор может создавать рядом временный или блокировочный файл с дополнительными символами. При длине вплотную к пределу открытие иногда проходит, а сохранение — нет. Оставляйте запас для реально используемой программы и её операций.
Повторите распаковку или копирование, проверьте журнал ошибок и состав. Затем откройте несколько важных файлов из назначения и выполните нужную операцию сохранения на копии.
Если части дерева недоступны инструменту проверки, отсутствие их в списке не означает успешную копию. Сохраняйте исходный архив и не удаляйте исходник до проверки пропусков и конфликтов имён.
Итог удобно формулировать конкретно: какой путь укорочен, какая версия инструмента использована, какую настройку изменили и где файлы после этого работают. Это помогает отличить временное обходное решение от подтверждённой поддержки длинных путей всей системой приложений.