Ограничение длины имени файла в Windows 10

Обновлено: 03.07.2024

В Windows 10 можно включить поддержку длинных имен файлов, что позволяет использовать имена файлов до 32 767 символов (хотя вы теряете несколько символов для обязательных символов, которые являются частью имени). Чтобы включить это, выполните следующие действия: Запустите редактор реестра (regedit.exe)

Какое максимальное количество символов в именах файлов в Windows?

Windows API устанавливает максимальную длину имени файла, так что имя файла, включая путь к файлу, не может превышать 255–260 символов.

Существует ли ограничение на количество символов в имени файла?

Ни один отдельный объект (файл или папка) не может иметь имя длиннее 255 символов. Сюда входят пробелы и обратная косая черта, используемые в качестве разделителей. Это ограничение в 255 символов для отдельного имени файла часто указывается в кавычках, но оно применяется только к именам файлов в корневом каталоге без дополнительных содержащих папок.

Какой длины может быть путь к файлу в Windows 10?

Windows 10 позволяет использовать пути к файлам длиннее 260 символов (с помощью взлома реестра) Начиная с Windows 95, Microsoft разрешает использовать пути к файлам только до 260 символов (что, честно говоря, было намного лучше, чем ограничение в 8 символов ранее) . Теперь с помощью настройки реестра вы можете превысить эту сумму в Windows 10.

Почему существует ограничение в 255 символов?

Ограничение возникает из-за метода оптимизации, при котором меньшие строки сохраняются с первым байтом, содержащим длину строки. Так как байт может содержать только 256 различных значений, максимальная длина строки будет 255, так как первый байт был зарезервирован для хранения длины.

Как заставить Windows 10 принимать пути к файлам длиной более 260 символов?

Как включить пути длиннее 260 символов в Windows 10

  1. Нажмите клавишу Windows, введите gpedit. msc и нажмите Enter.
  2. Перейдите к Политике локального компьютера > Конфигурация компьютера > Административные шаблоны > Система > Файловая система > NTFS.
  3. Дважды щелкните параметр «Включить длинные пути NTFS» и включите его.

Какова максимальная длина пути в Windows?

В Windows API (за некоторыми исключениями, описанными в следующих параграфах) максимальная длина пути – MAX_PATH, которая определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты имени, разделенные обратной косой чертой, и завершающий нулевой символ.

Какие символы нельзя использовать в имени файла?

Не используйте какие-либо из этих распространенных недопустимых символов/символов:

Может ли имя файла быть слишком длинным?

Система NTFS привела нас к тому, что длина имени файла может составлять 255 символов, а длина пути к файлу может доходить до 32 767 символов. Так как же мы можем иметь слишком длинные имена файлов? … Системная переменная MAX_PATH — это та, которая ограничивает имена файлов и пути к файлам до 260 символов.

Какие символы нельзя использовать в имени файла Windows?

Недопустимые имена файлов в Windows

  • Имя файла не содержит ни одного из следующих символов: ” (двойная кавычка), * (звездочка), (больше), ? (…
  • Имя файла не может заканчиваться пробелом или точкой.
  • Имя файла не может содержать имена, зарезервированные Windows.

Как исправить слишком длинный путь Windows и слишком длинное имя файла?

Как исправить: «Имя файла слишком длинное» (в проводнике Windows)

  1. ШАГ 1. Найдите файл, который вызывает эту ошибку.
  2. ШАГ 2. Теперь, когда вы знаете расположение файла, перейдите к родительской папке или папке верхнего уровня. …
  3. ШАГ 3. Переименуйте родительскую папку во что-то достаточно короткое, чтобы уменьшить количество символов ниже 260 символов.

Включает ли путь имя файла?

Каталоги всегда заканчиваются разделителем файлов и никогда не включают имя файла. … Пути включают корень, имя файла или и то, и другое. То есть пути можно формировать, добавляя к каталогу либо корень, либо имя файла, либо и то, и другое.

Что такое инструмент длинного пути?

Инструмент "Длинный путь" предоставляет мощное решение для удаления, копирования и переименования файлов и папок с длинными путями.

Как добавить более 255 символов в Excel?

Текстовые значения в формулах не должны превышать 255 символов. Чтобы создать в формуле текстовые значения длиннее 255 символов, используйте функцию СЦЕПИТЬ или оператор конкатенации (&).

Сколько байтов составляет 255 символов?

Ascii использует только первые 7 бит каждого байта, но каждый символ по-прежнему занимает один байт. 255 байт здесь будут 255 символами.

Как увеличить лимит символов в SharePoint?

Это можно сделать, перейдя в SharePoint в целевой список или параметры библиотеки, затем щелкнув столбец, вызывающий проблему, а затем выбрав несколько строк текста для типа столбца. Убедитесь, что исходное значение не превышает 255 символов.

В Windows API (за некоторыми исключениями, описанными в следующих параграфах) максимальная длина пути – MAX_PATH, которая определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты имени, разделенные обратной косой чертой, и завершающий нулевой символ. Например, максимальный путь на диске D равен "D:\какая-то 256-символьная строка пути", где " " представляет собой невидимый завершающий нулевой символ для текущей системной кодовой страницы. (Символы используются здесь для наглядности и не могут быть частью действительной строки пути.)

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

Функции файлового ввода-вывода в Windows API преобразуют «/» в «\» как часть преобразования имени в имя в стиле NT, за исключением случаев использования префикса «\\?\», как подробно описано в следующих разделах. .

Windows API имеет множество функций, которые также имеют версии Unicode, позволяющие использовать путь увеличенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных обратной косой чертой, каждый из которых не превышает значения, возвращаемого в параметре lpMaximumComponentLength функции GetVolumeInformation (обычно это значение составляет 255 символов). Чтобы указать путь увеличенной длины, используйте префикс «\\?\». Например, "\\?\D:\очень длинный путь".

Максимальная длина пути в 32 767 символов является приблизительной, поскольку префикс "\\?\" может быть расширен системой до более длинной строки во время выполнения, и это расширение применяется к общей длине.

Префикс "\\?\" также можно использовать с путями, созданными в соответствии с универсальным соглашением об именах (UNC). Чтобы указать такой путь в формате UNC, используйте префикс «\\?\UNC\». Например, «\\?\UNC\сервер\общий ресурс», где «сервер» — это имя компьютера, а «общий ресурс» — имя общей папки. Эти префиксы не используются как часть самого пути. Они указывают, что путь должен быть передан системе с минимальными изменениями, а это означает, что вы не можете использовать косую черту для представления разделителей путей, точку для представления текущего каталога или двойные точки для представления родительского каталога. Поскольку вы не можете использовать префикс "\\?\" с относительным путем, относительные пути всегда ограничены общим количеством символов MAX_PATH.

Нет необходимости выполнять какую-либо нормализацию Unicode для строк пути и имени файла для использования функциями API файлового ввода-вывода Windows, поскольку файловая система обрабатывает пути и имена файлов как непрозрачную последовательность WCHAR. Любая нормализация, которую требует ваше приложение, должна выполняться с учетом этого, независимо от любых вызовов связанных функций API файлового ввода-вывода Windows.

При использовании API для создания каталога указанный путь не может быть настолько длинным, чтобы к нему нельзя было добавить имя файла 8.3 (то есть имя каталога не может превышать MAX_PATH минус 12).

Оболочка и файловая система имеют разные требования. С помощью Windows API можно создать путь, который пользовательский интерфейс оболочки не сможет правильно интерпретировать.

Включить длинные пути в Windows 10 версии 1607 и более поздних

Начиная с Windows 10 версии 1607 ограничения MAX_PATH были удалены из общих функций файлов и каталогов Win32. Однако вы должны согласиться на новое поведение.

Чтобы включить новое поведение длинного пути, должны быть выполнены оба следующих условия:

  • Раздел реестра Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (тип: REG_DWORD) должен существовать и иметь значение 1. Значение ключа будет кэшировано системой (для каждого процесса) после первого вызова уязвимый файл Win32 или функция каталога (список функций см. ниже). Раздел реестра не будет перезагружаться в течение всего времени существования процесса. Чтобы все приложения в системе распознали значение ключа, может потребоваться перезагрузка, поскольку некоторые процессы могли быть запущены до установки ключа.

Вы также можете скопировать этот код в файл .reg, который может установить это для вас, или использовать команду PowerShell из окна терминала с повышенными привилегиями:

Этим разделом реестра также можно управлять с помощью групповой политики: Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути Win32 .

Манифест приложения также должен включать элемент longPathAware.

Это функции управления каталогами, которые больше не имеют ограничений MAX_PATH, если вы соглашаетесь на использование длинного пути: CreateDirectoryW, CreateDirectoryExW GetCurrentDirectoryW RemoveDirectoryW SetCurrentDirectoryW.

Это функции управления файлами, которые больше не имеют ограничений MAX_PATH, если вы согласились на использование длинного пути: CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW , SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.

< бр />

Уолтер Гленн


Уолтер Гленн
Бывший главный редактор

Уолтер Гленн – бывший главный редактор How-To Geek и связанных с ним сайтов. Он имеет более чем 30-летний опыт работы в компьютерной индустрии и более 20 лет в качестве технического писателя и редактора. Он написал сотни статей для How-To Geek и отредактировал тысячи. Он является автором или соавтором более 30 книг по компьютерам на более чем дюжине языков для таких издательств, как Microsoft Press, O'Reilly и Osborne/McGraw-Hill. Он также написал сотни технических документов, статей, руководств пользователя и курсов. Подробнее.


Благодаря юбилейному обновлению Windows 10 вы, наконец, можете отказаться от максимального пути в 260 символов в Windows. Вам просто нужно внести небольшие изменения в реестр Windows или групповую политику. Вот как это сделать.

До Windows 95 в Windows разрешались имена файлов длиной только восемь символов с трехсимвольным расширением файла, обычно называемым именем файла 8.3. Windows 95 отказалась от этого, чтобы разрешить длинные имена файлов, но по-прежнему ограничивала максимальную длину пути (включая полный путь к папке и имя файла) до 260 символов. С тех пор этот предел существует. Если вы когда-либо сталкивались с этим ограничением, скорее всего, это было, когда вы пытались скопировать структуру глубоких папок в другие папки, например, при копировании содержимого жесткого диска в папку на другом диске. Юбилейное обновление Windows 10, наконец, добавляет возможность отказаться от этой максимальной длины пути.

Есть одно предостережение. Этот новый параметр не обязательно будет работать с каждым приложением, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-разрядные приложения. Старые 32-разрядные приложения должны быть манифестированы, чтобы работать, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должны вызывать проблем. Тем не менее, вы ничем не рискуете, попробовав сеттинг. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, которые сохраняются в местах, где полный путь превышает 260 символов.

Домашние пользователи: уберите ограничение в 260 символов путем редактирования реестра

Если у вас домашняя версия Windows, вам придется отредактировать реестр Windows, чтобы внести эти изменения. Вы также можете сделать это, если у вас Windows Pro или Enterprise, но вам удобнее работать в реестре, чем в редакторе групповой политики. (Однако если у вас Pro или Enterprise, мы рекомендуем использовать более простой редактор групповой политики, как описано в следующем разделе.)

Стандартное предупреждение: Редактор реестра — это мощный инструмент, и неправильное его использование может сделать вашу систему нестабильной или даже неработоспособной. Это довольно простой способ, и если вы будете следовать инструкциям, у вас не должно возникнуть никаких проблем. Тем не менее, если вы никогда не работали с ним раньше, подумайте о том, чтобы прочитать о том, как использовать редактор реестра, прежде чем начать. И обязательно сделайте резервную копию реестра (и вашего компьютера!) перед внесением изменений.

Чтобы начать, откройте редактор реестра, нажав "Пуск" и введя "regedit". Нажмите Enter, чтобы открыть редактор реестра и дать ему разрешение на внесение изменений в ваш компьютер.


В редакторе реестра используйте левую боковую панель, чтобы перейти к следующему разделу:


Справа найдите значение LongPathsEnabled и дважды щелкните его.Если вы не видите значение в списке, вам необходимо создать его, щелкнув правой кнопкой мыши раздел FileSystem, выбрав «Создать» > «Значение DWORD (32-разрядное)», а затем назвав новое значение LongPathsEnabled .


В окне свойств значения измените значение с 0 на 1 в поле "Данные значения" и нажмите "ОК".


Теперь вы можете закрыть редактор реестра и перезагрузить компьютер (или выйти из своей учетной записи и войти снова). Если вы когда-нибудь захотите отменить изменения, просто вернитесь к значению LongPathsEnabled и установите его с 1 обратно на 0.

Загрузите наш инструмент для взлома реестра в один клик


Если вам не хочется копаться в реестре самостоятельно, мы создали два загружаемых хака реестра, которые вы можете использовать. Один хак удаляет ограничение пути в 260 символов, а другой хак восстанавливает ограничение по умолчанию. Оба включены в следующий ZIP-файл. Дважды щелкните тот, который хотите использовать, пройдитесь по подсказкам и перезагрузите компьютер.

Эти взломы на самом деле представляют собой просто ключ FileSystem, урезанный до значения LongPathsEnabled, описанного выше, а затем экспортированный в файл .REG. Выполнение хака «Удалить ограничение пути в 260 символов» устанавливает значение LongPathsEnabled в 1. Выполнение хака «Восстановить ограничение пути в 260 символов (по умолчанию)» возвращает значение 0. И если вам нравится возиться с реестром, стоит воспользоваться пора научиться делать собственные взломы реестра.

Профессиональные и корпоративные пользователи: уберите ограничение в 260 символов с помощью редактора локальной групповой политики

Если вы используете Windows 10 Pro или Enterprise, проще всего отключить уведомления об установке нового приложения с помощью редактора локальной групповой политики. Это довольно мощный инструмент, поэтому, если вы никогда не использовали его раньше, стоит потратить некоторое время, чтобы узнать, на что он способен. Кроме того, если вы находитесь в корпоративной сети, сделайте всем одолжение и сначала обратитесь к своему администратору. Если ваш рабочий компьютер является частью домена, вполне вероятно, что он является частью групповой политики домена, которая в любом случае заменит локальную групповую политику.

В Windows 10 Pro или Enterprise нажмите "Пуск", введите gpedit.msc и нажмите Enter.


В редакторе локальной групповой политики на левой панели выберите Конфигурация компьютера > Административные шаблоны > Система > Файловая система. Справа найдите пункт «Включить длинные пути win32» и дважды щелкните его.


В открывшемся окне свойств выберите параметр «Включено» и нажмите «ОК».


Теперь вы можете выйти из редактора локальной групповой политики и перезагрузить компьютер (или выйти и снова войти), чтобы изменения вступили в силу. Если в любой момент вы захотите отменить изменения, просто выполните ту же процедуру и снова установите для этого параметра значение «Отключено» или «Не настроено».

Возможно, вы никогда не сталкивались с максимальным ограничением пути, но для некоторых людей это, безусловно, может время от времени вызывать разочарование. Windows 10 наконец-то добавила возможность снять это ограничение. Вам просто нужно быстро внести изменения в реестр или групповую политику, чтобы это произошло.

  • › Все новое в обновлении Windows 10 за май 2019 года уже доступно
  • › Что такое ReFS (отказоустойчивая файловая система) в Windows?
  • › Как установить Python в Windows
  • › Как удалить файлы, заявления Windows «слишком длинные»
  • › Почему СМС должен умереть
  • › Что означает XD и как вы его используете?
  • › Почему прозрачные чехлы для телефонов желтеют?
  • › Как восстановить метки панели задач в Windows 11

Закрыто. Этот вопрос не соответствует правилам переполнения стека. В настоящее время ответы не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.

Закрыт 2 года назад.

Я знаю, что в старых версиях Windows максимальная длина файлов или папок составляет около 250 символов. Кто-нибудь знает, изменили ли они ее в Windows 10?

ИЗМЕНИТЬ:

Я делаю некоторый Java-код вокруг данного API для извлечения некоторого содержимого приложения, это будет несколько тысяч файлов, и я немного беспокоюсь о том, что может произойти, поскольку я не знаю, какое имя файла и путь будет выглядеть так, поэтому я постараюсь предотвратить эти ошибки, возможно, изменив имя в Java перед сохранением (но в идеале сохранить исходное имя),

Итак, вы знаете, будет ли сделано какое-то исключение? Файл файл = новый файл (jsonFile); ? спасибо, я мог потенциально лечить в улове

@T.J.Crowder на данный момент меня больше интересует имя файла, потому что, однако, длина пути является полезной информацией, которую нужно иметь

2 ответа 2

Если вы действительно имеете в виду имя файла, я полагаю, что ограничение по-прежнему составляет "обычно" 255 символов, см. третий абзац в кавычках ("Windows API имеет много. ") ниже.

Если вы имеете в виду путь к файлу: вы можете включить параметр «Длинные пути Win32». Из этого документа Microsoft:

Ограничение максимальной длины пути

В Windows API (за некоторыми исключениями, обсуждаемыми в следующих абзацах) максимальная длина пути составляет MAX_PATH, которая определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты имени, разделенные обратной косой чертой, и завершающий нулевой символ. Например, максимальный путь на диске D равен " D:\some 256-символьная строка пути", где " " представляет собой невидимый завершающий нулевой символ для текущей системной кодовой страницы. (Эти символы используются здесь для наглядности и не могут быть частью допустимой строки пути.)

Примечание

Функции файлового ввода-вывода в Windows API преобразуют "/" в " \ " как часть преобразования имени в имя в стиле NT, за исключением случаев использования префикса " \\?\ ", как подробно описано в следующих разделах.

Windows API имеет множество функций, которые также имеют версии Unicode, позволяющие использовать путь увеличенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных обратной косой чертой, каждый из которых не превышает значение, возвращаемое в параметре lpMaximumComponentLength функции GetVolumeInformation (это значение обычно составляет 255 символов). Чтобы указать путь увеличенной длины, используйте префикс " \\?\ ". Например, " \\?\D:\очень длинный путь ".

Примечание

Максимальный путь длиной 32 767 символов является приблизительным, поскольку префикс " \\?\ " может быть расширен системой до более длинной строки во время выполнения, и это расширение применяется к общей длине.

Префикс " \\?\ " также можно использовать с путями, созданными в соответствии с универсальным соглашением об именах (UNC). Чтобы указать такой путь с использованием UNC, используйте префикс " \\?\UNC\ ". Например, «\\?\UNC\сервер\общий ресурс», где «сервер» — это имя компьютера, а «общий ресурс» — имя общей папки. Эти префиксы не используются как часть самого пути. Они указывают, что путь должен быть передан системе с минимальными изменениями, а это означает, что вы не можете использовать косую черту для представления разделителей путей, точку для представления текущего каталога или двойные точки для представления родительского каталога. Поскольку вы не можете использовать префикс " \\?\ " с относительным путем, относительные пути всегда ограничены общим количеством символов MAX_PATH.

Нет необходимости выполнять какую-либо нормализацию Unicode для строк пути и имени файла для использования функциями API файлового ввода-вывода Windows, поскольку файловая система обрабатывает пути и имена файлов как непрозрачную последовательность WCHAR. Любая нормализация, которую требует ваше приложение, должна выполняться с учетом этого, независимо от любых вызовов связанных функций API файлового ввода-вывода Windows.

При использовании API для создания каталога указанный путь не может быть настолько длинным, чтобы к нему нельзя было добавить имя файла 8.3 (то есть имя каталога не может превышать MAX_PATH минус 12).

Оболочка и файловая система имеют разные требования. С помощью Windows API можно создать путь, который пользовательский интерфейс оболочки не сможет правильно интерпретировать.

Включить длинные пути в Windows 10 версии 1607 и более поздних

Начиная с Windows 10 версии 1607 ограничения MAX_PATH были удалены из общих функций файлов и каталогов Win32. Однако вы должны согласиться на новое поведение.

Чтобы включить новое поведение длинного пути, должны быть выполнены оба следующих условия:

  • Раздел реестра HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (тип: REG_DWORD) должен существовать и иметь значение 1. Значение ключа будет кэшировано системой (для каждого процесса) после первого вызова затронутого Win32. функция файла или каталога (см. ниже список функций). Раздел реестра не будет перезагружаться в течение всего времени существования процесса. Чтобы все приложения в системе распознали значение ключа, может потребоваться перезагрузка, поскольку некоторые процессы могли быть запущены до установки ключа.

Примечание

Этим разделом реестра также можно управлять с помощью групповой политики в разделе Конфигурация компьютера > Административные шаблоны > Система > Файловая система > Включить длинные пути NTFS.

Манифест приложения также должен включать элемент longPathAware.

Это функции управления каталогами, которые больше не имеют ограничений MAX_PATH, если вы соглашаетесь на использование длинного пути: CreateDirectoryW, CreateDirectoryExW GetCurrentDirectoryW RemoveDirectoryW SetCurrentDirectoryW.

Это функции управления файлами, которые больше не имеют ограничений MAX_PATH, если вы согласились на использование длинного пути: CopyFileW, CopyFile2, CopyFileExW, CreateFileW, CreateFile2, CreateHardLinkW, CreateSymbolicLinkW, DeleteFileW, FindFirstFileW, FindFirstFileExW, FindNextFileW, GetFileAttributesW, GetFileAttributesExW , SetFileAttributesW, GetFullPathNameW, GetLongPathNameW, MoveFileW, MoveFileExW, MoveFileWithProgressW, ReplaceFileW, SearchPathW, FindFirstFileNameW, FindNextFileNameW, FindFirstStreamW, FindNextStreamW, GetCompressedFileSizeW, GetFinalPathNameByHandleW.

Обратите внимание: хотя в этой статье говорится, что параметр редактора групповой политики — «Включить длинные пути NTFS», это уже не так; теперь это «Включить длинные пути Win32»:

Читайте также: