Существует ли предел длины имени файлов в Windows
Во всех операционных системах и для всех файловых систем существуют определённые лимиты на:
- размер имени файла
- на полный путь файла (который включает папки и подпапки)
Операционная система Windows не является исключением, в ней длина имени файла или папки ограничена 255 символами, а вся длина пути ограничена примерно 32,000 символами.
Имеется ряд исключений, когда разрешённая длина файла должна быть меньше этих значений:
К сожалению, Windows весьма «молчалив» в ситуациях, когда возникают проблемы с длиной имени файла или пути на сетевых носителях. В результате, часть файлов может отображаться нормально, а часть отсутствовать. Если файлов много, то не всегда просто понять, все ли они на месте. Признаками того, что некоторые файлы на сетевой папке имеют слишком длинное имя является:
- отсутствует файл, который точно должен быть или который виден при подключении диска напрямую (а не через сеть)
- при создании файла возникает ошибка, что такой файл уже существует, хотя его не видно
При поиске по файлам средствами ОС, эти файлы также недоступны для индексации и поиска по ним.
Все программы, от стандартного проводника Windows до сторонних файловых менеджеров не способны увидеть эти файлы со слишком длинными именами, при этом каких-либо ошибок не возникает.
Подтвердить проблему слишком длинного имени на сетевом носителе можно командой вида:
вызывает следующую ошибку из-за того, что в папке имеется файл со слишком длинным именем:
Если вы работаете с сетевым диском и он подключён к Linux, то вам может помочь инструкция «Как найти имена файлов, чья длина превышает определённое значение».
В остальных случаях, попробуйте следующие советы:
1. (если слишком длинный путь до файла) Вначале скопируйте папку на более высокие уровни в windows эксплорере и затем переместите их на ваш локальный компьютер
2. (если имена файлов слишком длинные) Вначале попробуйте поместить их в архив программами zip/rar/7z и затем скопируйте файл архива на свой локальный компьютер и извлеките его содержимое
3. Попробуйте встроенную программу ROBOCOPY:
4. Попробуйте перед путём добавить \\?\
5. Используйте сторонне программное обеспечение (о нём далее)
FastCopy — это проект с открытым исходным кодом на C, написанный SHIROUZU Hiroaki и это «Самое быстрое программное обеспечение для копирования/удаления файлов на Windows.» Программа поддеррживает UNICODE и более чем MAX_PATH (260 символов) в путях имён файлов.
Если имеются сотни путей, которые слишком долго исправлять, то используйте инструмент «Path Tool Long Auto Fixer».
Исследование файловых системы: FAT. Глава 4. Длинные имена.
Начиная с Windows 95 была введена практика использования “длинных” имён для каталогов и файлов. В таких именах допускается использование символов разного регистра, наличие точек, пробелов и некоторых других специальных символов.
В каталоге под такой файл отводится несколько смежных 32-байтных блоков.
Эти элементы имеют спецефическое значение элемента “атрибуты”, выставлены одновременно флаги “метка тома”, “системный”, “скрытый” и “только чтение”, благодаря которому ОС их не воспринимает при поиске и не отображает. После этих записей идет элемент с обычной структурой, в котором хранится короткое имя в формате 8.3. Этот элемент заключает в себе номер начального кластера, дату создания и атрибуты файла или каталога.
Важно понимать, что длинное имя без короткого не существует.
Все блоки с частями длинного имени нумеруются по порядку следования символов, причем блок с номером 01h будет располагаться непосредственно перед блоком с коротким именем.
Если в этот 01h -ый блок не умещается длинное имя, то перед ним будет блок с номером 02h и так далее, до тех пор, пока имя не уместится.
У самого последнего блока номер будет увеличиваться на 40h . То есть если длинное имя заключилось в 1 блок, то его номер будет 41h .
Итак, резюмирую. Структура файлов с “длинным” именем выглядит так:
Смещение | Длина в байтах | Описание |
00h | 1 | Порядковый номер блока |
01h | 10 | Имя (5 символов Unicode по 2 байта каждый) |
0Bh | 1 | Атрибуты 0Fh |
0Ch | 1 | Тип ( 00h ) |
0Dh | 1 | Контрольный код (берется из короткого имени) |
0Eh | 12 | Имя (6 символов Unicode по 2 байта каждый) |
1Ah | 2 | Байты 0000h |
1Ch | 4 | Имя (2 символа Unicode по 2 байта каждый) |
Нетрудно подсчитать, что одна такая запись позволяет вместить 5+6+2=13 символов имени файла.
Создадим на флешке файл с именем “long_name_file_ole-ole-raz-dva-tri-raz-dva-tri-raz-dva-tri.txt”, это 62 символа. 62 делим на 13 получаем 5 (с округлением в большую сторону), значит, чтобы описать такое имя, потребуется 5 блоков для длинного имени + 1 блок для короткого.
Длинное имя в файловой системе
- Байт 01h – первый блок длинного имени;
- Байт 02h – второй блок длинного имени. Мы знаем, что имя не вместится в этот блок, поскольку последний блок увеличивается на 40h;
- Аналогично;
- Аналогично;
- Байт 45h – пятый блок имени, он увеличен на 40h (40h + 05h = 45h), значит блок последний;
- Сразу после 01h блока идёт блок с описанием короткого имени файла, его мы рассматривали ранее (см. записи по тегу FAT)
- Вот тут начинается длинное имя. Так как это Unicode, то под каждый символ отводится 2 байта. Выписываем эти символы (чуть ниже);
- Эта вставка из таблицы, атрибуты и тип;
- Аналогично, табличное;
Итак, начинаем вычитывать имя файла. Выписываем байты с 01h блока по последний. Всё, что я отметил зеленым в первом блоке, перепишем последовательно:
6C 6F 6E 67 5F 6E 61 6D 65 5F 66 69 6C
Теперь переходим на следующий блок (вверх) и продолжаем:
65 5F 6F 6C 65 2D 6F 6C 65 2D 72 61 7A
Продолжаем 3-ий блок:
2D 64 76 61 2D 74 72 69 2D 72 61 7A 2D
Продолжаем 4-ый блок:
64 76 61 2D 74 72 69 2D 72 61 7A 2D 64
76 61 2D 74 72 69 2E 74 78 74 00
Склеив это, получаем:
6C 6F 6E 67 5F 6E 61 6D 65 5F 66 69 6C 65 5F 6F 6C 65 2D 6F 6C 65 2D 72 61 7A 2D 64 76 61 2D 74 72 69 2D 72 61 7A 2D 64 76 61 2D 74 72 69 2D 72 61 7A 2D 64 76 61 2D 74 72 69 2E 74 78 74 00
Вот так и хранятся длинные имена файлов. Спасибо за внимание!
Разрешить длинные имена файлов в windows 10
То что тут описано не работает. Или на русскую аудиторию создатели не ориентированны?
Ответы (18)
* Попробуйте выбрать меньший номер страницы.
* Введите только числа.
* Попробуйте выбрать меньший номер страницы.
* Введите только числа.
Что именно Вы хотите победить?
И что там написано, которое не работает?
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Этот ответ помог 2 польз.
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
у вас установлена инсайдерская версия ОС?
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Этот ответ помог 1 пользователю
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Этот ответ помог 3 польз.
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
и вам лень в суть вопроса вникнуть?
Да нет, не лень. Я как раз и пытаюсь из Вас вытащить эту самую суть, которую Вы тщательно скрываете. 🙁
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Этот ответ помог 2 польз.
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв.
Ограничение на длину в названии 260 знаков как убрать
Длинные имена — это свыше 8 символов, так что от 9 до 255 — это как раз длинные имена и есть и они давно разрешены, уже лет 20 как. Больше 255 символов имени в запись файла в MFT не влезает, так что в рамках NTFS больше 255 сделать нельзя.
Чтобы использовать 1000 символов, надо помещать их не в имя, а в описание файла, или в отдельный поток, или искать еще какие-то решения. Но собственно имя нельзя сделать длиннее.
Этот ответ помог 2 польз.
Это помогло устранить вашу проблему?
К сожалению, это не помогло.
Великолепно! Спасибо, что пометили это как ответ.
Насколько Вы удовлетворены этим ответом?
Благодарим за отзыв, он поможет улучшить наш сайт.