Проблема
Проблема: При создании или переименовании файла Windows не позволяет задать имя длиннее определённого количества символов
Выглядит это так:
- При переименовании файла Проводник перестаёт принимать новые символы
- Сообщение об ошибке не появляется
- В разных папках максимально допустимая длина имени отличается
Это связано с историческим ограничением Windows на длину полного пути к файлу (MAX_PATH)
В классическом Win32 API значение MAX_PATH составляет 260 символов, включая завершающий нулевой символ
При этом учитывается не только имя файла, но и весь путь к нему:
C:\Users\Admin\Documents\Projects\Reports\Document.docx
Полный путь складывается из:
- Буквы диска и корневого каталога
- Названий всех вложенных папок
- Разделителей
\ - Имени файла и расширения
Например:
Если путь до папки занимает 235 символов, то для имени файла вместе с расширением остаётся около 23 символов. Поэтому один и тот же файл может без проблем переименовываться в C:\Temp, но не в папке с большой глубиной вложенности.
Дополнительные ограничения
| Ограничение | Значение |
|---|---|
| MAX_PATH | 260 символов, включая завершающий NULL |
| Имя одного файла или каталога в NTFS | Обычно 255 символов |
| Поддержка более длинных путей | Windows 10 (1607+) и Windows 11, при соблюдении условий |
Решения
Сократить полный путь
Например, вместо:
C:\Users\Admin\Documents\Company\Projects\2026\Documentation\Reports\
использовать:C:\Projects\Reports\
Создать виртуальный диск через SUBST
Команда subst позволяет назначить существующему каталогу отдельную букву диска без физического перемещения файлов
Создание виртуального диска:
subst X: "C:\Users\Admin\Documents\Company\Projects\2026\Documentation\Reports"- После этого каталог станет доступен через
X:\, что позволит обращаться к его содержимому по более короткому пути
Удаление виртуального диска:
subst X: /d- Команда удаляет только виртуальное сопоставление. Исходные файлы остаются на месте
Включить поддержку длинных путей
Windows 10 и 11 позволяют включить поддержку длинных путей для совместимых приложений
- Запустить PowerShell от админа и выполнить:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
- Перезагрузить компьютер
Альтернативный способ через групповые политики (если редактор доступен):
Конфигурация компьютера->Административные шаблоны->Система->Файловая система->Включить длинные пути Win32
Важно: изменение этого параметра не гарантирует устранение ограничения в Проводнике Windows. Приложение должно самостоятельно поддерживать работу с длинными путями (
longPathAware).
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий