В ms dos длина имени файла не может превышать

Обновлено: 01.07.2024

Старая файловая система MS-DOS FAT поддерживает не более 8 символов для основного имени файла и 3 символа для расширения, всего 12 символов, включая разделитель точек.

Какова максимальная длина имени файла?

Максимальная общая длина имени файла и имени пути составляет 1024 символа. Представление Unicode символа может занимать несколько байтов, поэтому максимальное количество символов, которое может содержать имя файла, может варьироваться. В Linux: максимальная длина имени файла составляет 255 байт.

Какова максимальная длина имени файла в Windows?

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

Какова максимальная длина имени файла в Windows 10?

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

Как узнать длину пути?

Чтобы запустить средство проверки длины пути с помощью графического интерфейса, запустите PathLengthCheckerGUI.exe. Когда приложение открыто, укажите корневой каталог, который вы хотите найти, и нажмите большую кнопку «Получить длину пути». PathLengthChecker.exe — это альтернатива графическому интерфейсу командной строки, включенная в ZIP-файл.

Почему DOS использует имена файлов версии 8.3? [Размер в байтах] | Ботаник с ностальгией

Найдено 15 связанных вопросов

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

Максимальная длина имени пути составляет 256 символов, включая все родительские каталоги и имя файла. 255-символьное имя файла в смешанном регистре возможно только для файлов или папок без подпапок в корневой папке любого диска.

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

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

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

Перейдите в меню "Пуск" Windows и введите REGEDIT. Выберите редактор реестра. В редакторе реестра перейдите в следующую папку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.
.
Выберите значение DWORD (32 разряда).

  1. Нажмите правой кнопкой мыши только что добавленный ключ и выберите "Переименовать".
  2. Назовите ключ LongPathsEnabled.
  3. Нажмите Enter.

Что такое путь назначения слишком длинный?

Пользователи получают сообщение об ошибке «Слишком длинный путь назначения» при попытке скопировать, переместить или удалить определенные файлы или папки в операционных системах Windows. В большинстве случаев эта ошибка возникает из-за того, что у Microsoft есть ограничения на папки и имена 256/260.

Что означает отключение ограничения длины пути?

Нажатие параметра «Отключить ограничение длины пути» снимает ограничение на переменную MAX_PATH. Это изменение ничего не сломает, но позволит Python использовать длинные имена путей.

Должен ли я отключить ограничение пути?

Отключение ограничения длины пути рекомендуется после успешной установки Python, потому что, если python был установлен в каталоге с длиной пути более 260 символов, добавление его в путь может завершиться ошибкой. Так что не беспокойтесь об этом действии и приступайте к нему.

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

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

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

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

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

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

Как найти файлы со слишком длинными именами?

  1. Выберите Найти | Длинные имена файлов. или (Alt+I,N) из главного меню, чтобы открыть диалоговое окно, в котором вы можете точно указать, какие файлы вы хотите найти.
  2. Если выбрана одна или несколько папок, они будут автоматически введены в поле "Пути" диалогового окна при его открытии.

Каков максимальный размер имени файла в Linux в байтах?

В Linux: максимальная длина имени файла составляет 255 байт. Максимальная общая длина имени файла и пути составляет 4096 байт.Эта длина соответствует PATH_MAX, поддерживаемому операционной системой.

Не удается найти включение длинных путей NTFS?

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

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

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

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

  1. Почему длина имени файла является проблемой даже в Windows?
  2. Легкое решение.
  3. Непростые решения.
  4. Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell.
  5. Копировать каталог с помощью Copy-Item.
  6. Переместить каталог с помощью Move-Item.
  7. Удалить каталог с помощью команды Remove-Item.

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

С префиксом "\\?\" все распространенные файловые системы, такие как NTFS, UDF, FAT32 и exFAT, поддерживают полную максимальную длину пути NT. Ограничение пути в 260 символов связано с фиксированными буферами в библиотеке времени выполнения для обработки пути DOS/Windows (например, ANSI Unicode, рабочий каталог и преобразование пути DOS NT).

Как скопировать файл, содержащий более 255 символов?

В Windows есть ограничение: длина полного пути к файлу не может превышать 255 символов. У Microsoft есть программа копирования из командной строки под названием «Robocopy» (надежное копирование), которая может копировать файлы без этого ограничения. ROBOCOPY будет принимать пути UNC, включая пути UNC длиной более 256 символов.

Как снять ограничение в 255 символов в Excel?

Текстовые значения в формулах не должны превышать 255 символов. Чтобы создать в формуле текстовые значения длиннее 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.

Найдите свой тарифный план в консоли Code42 в меню "Учетная запись" .
Не клиент Incydr? Чтобы найти статьи CrashPlan, выполните поиск или просмотрите .

Incydr Professional, Enterprise, Gov F2 и Horizon, №

Да, Incydr Basic, Advanced и Gov F1.

CrashPlan Cloud, №

Устаревшие тарифные планы, нет.

CrashPlan для малого бизнеса, №

Обзор

Если вы используете операционную систему Windows и состояние резервного копирования не достигает 100 %, одной из возможных причин может быть то, что вы копируете пути к файлам и имена, длина которых превышает 255–260 символов. В этой статье дается техническое объяснение этой проблемы и рекомендуемое решение.

Влияет

Приложение Code42, работающее в Windows (все версии, x86 и x64)

Прежде чем начать

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

Под капотом

У Microsoft есть основной набор интерфейсов прикладного программирования (API), которые программисты могут использовать для взаимодействия с приложениями в операционной системе Windows. Эти программные интерфейсы часто называют Windows API. Windows API устанавливает максимальную длину имени файла, так что имя файла, включая путь к файлу, не может превышать 255–260 символов.

Однако, поскольку это ограничение API Windows, а не файловой системы, используемой в большинстве установок Windows (NTFS), некоторые программы могут создавать имена файлов, нарушающие это ограничение.

Когда приложение Code42 пытается прочитать эти файлы для резервного копирования, это не удается, потому что Windows не знает, как обращаться с файлом. В этом случае в файле service.log приложения Code42 отображается следующее сообщение об ошибке:

Диагностика

Симптомы этой проблемы включают:

  • Ваша резервная копия никогда не достигает 100%
  • Приложение Code42 работает, но некоторые файлы остаются в списке задач резервного копирования.

Исправить эту проблему может быть сложно. Если вы попытаетесь переименовать, переместить или удалить файл в Windows, вы можете получить следующие сообщения:

Рекомендуемое решение

Поскольку вы не можете перемещать файлы с помощью проводника Windows, вы должны использовать команду subst, чтобы сократить путь к файлу (файлам).

Самый простой способ исправить это:

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

Это можно сделать любым из способов, описанных ниже.

Способ 1. Используйте команду subst, чтобы назначить букву диска определенной папке

Путь к определенной папке можно заменить буквой диска с помощью командной строки Windows и команды subst. Команда имеет следующий формат:

Например, если вы хотите заменить путь к папке C:\Example\File\Path на букву диска Y , введите:

Теперь диск Y: "сопоставляется" непосредственно с папкой. Поскольку вы заменили большую часть длинного пути к файлу на Y: , это больше не нарушает ограничение на количество символов. Теперь вы можете переместить файлы из этой папки в папку с более коротким путем.

После перемещения файлов вы можете удалить виртуальный диск, выполнив команду subst с параметром /d. Чтобы удалить диск Y:, созданный в приведенном выше примере, введите:

Способ 2. Используйте визуальную подстановку, чтобы назначить букву диска определенной папке

Если вам неудобно пользоваться командной строкой Windows, есть бесплатная утилита Visual Subst, которую можно использовать для достижения тех же результатов. Code42 не создает и не тестирует это программное обеспечение. Если вы решите использовать его, мы не сможем предоставить поддержку.

Информацию о программе и пример ее использования можно найти по адресу:

Я разрабатываю таблицу базы данных, в которой будут храниться имена загруженных файлов. Какова максимальная длина имени файла в NTFS, используемой в Windows XP или Vista?


Я никогда не видел столько разных ответов на, казалось бы, простой вопрос. 199, 255, 256, 257, 260, «около 30 000», «примерно 32 000» и «это зависит». Конечно, есть квалификаторы, но не могут же они все быть правильными, не так ли?

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

@РобертПитт. Вы что-то там упускаете. Цитата из MSDN: «максимальная длина пути MAX_PATH, которая определяется как 260 символов»

@Майкл9000. Я полагаю, что РобертПитт цитировал ограничение имени файла (о чем этот вопрос), а не ограничение пути.

NTFS вообще НЕ ограничена MAX_PATH, Windows Shell ограничена MAX_PATH, максимальная длина пути NTFS составляет 32 КБ

14 ответов 14

Отдельные компоненты имени файла (т. е. каждый подкаталог на пути и конечное имя файла) ограничены 255 символами, а общая длина пути ограничена примерно 32 000 символами.


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

Очевидно, что если вы используете "юникодную версию" файловых методов Windows API, вы можете получить до 32767, если добавите к путям префикс "\\?\", верно?

@rogerdpack: для полного пути — да, но каждый отдельный компонент (подпапка/конечный файл) имеет ограничение в 255 кодовых точек utf-16. Плюс обычное ПО ожидает MAX_PATH, т.е. бум :)

В Windows 10 (версия 1607 — юбилейное обновление) и Windows Server 2016 у вас есть возможность игнорировать проблему MAX_PATH, переопределяя запись групповой политики, включающую длинные пути NTFS в разделе «Конфигурация компьютера» -> «Шаблоны администратора» -> «Система» -> Файловая система:

Это 257 символов. Чтобы быть точным: сама NTFS устанавливает максимальную длину имени файла в несколько тысяч символов (около 30 000 с чем-то). Тем не менее, Windows устанавливает максимальную длину 260 для пути + имени файла. Диск+папка занимает как минимум 3 символа, поэтому в итоге получится 257.

Неверно: терминатор NUL является частью MAX_PATH, что оставляет вам максимальный путь из 256 символов (который вы не сможете создать из-за ограничения отдельных компонентов в 255).

"которое вы не сможете создать из-за ограничения количества отдельных компонентов в 255" Неверно. Мы говорим здесь о максимальной длине пути, а не о максимальной длине отдельных компонентов пути. Более того, «при использовании API для создания каталога указанный путь не может быть настолько длинным, чтобы вы не могли добавить имя файла 8.3 (то есть имя каталога не может превышать MAX_PATH минус 12)».

Эти споры возникают только потому, что низкоуровневый API позволяет создавать имена файлов из 256 символов, при условии, что 256 символов являются нулевыми, но файл становится недоступным (скрытым) для собственных приложений, поэтому обычно бесполезен.

@LudovicKuty: на самом деле ОП говорил об ограничении длины имени файла, а не о длине пути (да, я проверял даже в исходной версии). И он/она очень конкретно имел в виду ограничения NTFS, а не ограничения ОС, конкретной подсистемы, API или фреймворка.

@0xC0000022L Да, действительно. Я неправильно понял это в вопросе OP и сосредоточился на комментариях, в которых говорится о длине имени файла и длине пути.

Вот что говорит «Необработанное исключение» в фреймворке 4.5 при попытке сохранить файл с длинным именем:

Указанный путь, имя файла или оба слишком длинные. Полное имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символов.

screenshot



199 в Windows XP NTFS, только что проверил.

Это не теория, а просто примерка на моем ноутбуке. Могут быть смягчающие эффекты, но физически это не позволит мне увеличить его.

Интересно, есть ли какие-то другие настройки, ограничивающие это? Попробуйте сами.


Кажется, ограничение в 200 символов есть в проводнике. Другие программы могут создавать более длинные имена файлов. Вероятно, это намеренное ограничение, чтобы уберечь пользователя от самого себя. :-)

Нет, вы (непреднамеренно) проверили ограничение MAX_PATH, равное 260 (259 без завершающего нулевого символа). Попробуйте еще раз, указав C:\ в качестве текущего каталога.

@Prof.Falken У меня больше нет XP для проверки, и я поверю вам на слово, возможно, вместо этого вы предпочтете хорошую игру в крестики-нолики?

Длина в NTFS – 255. Поле NameLength в атрибуте NTFS $Filename представляет собой байт без смещения; это дает диапазон от 0 до 255.

Таким образом, имя файла или каталога может содержать до 255 символов. При указании полного пути под Windows необходимо указать префикс пути \\?\ (или использовать \\?\UNC\server\share для путей UNC), чтобы пометить этот путь как путь расширенной длины (~32 тыс. символов) . Если ваш путь длиннее, вам придется установить свой рабочий каталог по пути (тьфу - побочные эффекты из-за настройки всего процесса).

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