Длина имени файла Windows 7 ограничена 129 символами

18

Я пытаюсь правильно назвать MP3, и я набрал произвольную длину в 129 символов (не 128?). NTFS поддерживает 255 символов в именах файлов, как мне это исправить?

Звездные войны - 6 - Возвращение джедая - 2 - 07 - Битва при Эндоре 2, Лея ранена, Дуэль начинается, Обгоняющий Бункер, Темный Si.mp3

Джон
источник
2
Лучше не полагаться на действительно длинные имена файлов, так как это может привести к ряду проблем. MP3 могут иметь встроенные метаданные в виде тегов ID3 ​​для этого и / или использовать каталоги.
Джеймс Райан
3
Я открываю файлы и плейлисты; Я не пользуюсь "медиатеками". Мои коллекции имеют правильное название, у меня нет файлов «1.mp3», и я не могу терпеть людей, которым лень правильно именовать файлы; какой "1.mp3", когда в каждом альбоме есть хотя бы один трек. ಠ_ಠ
Джон

Ответы:

13

Возможно, вы превысили 260 символов для всего пути, включая символы обратной косой черты.

Сколько символов в пути, включая имя файла mp3?

Дэвид Пейдж
источник
1
Да, оказывается, переименование файлов на диске без каталогов позволяет более длинные имена. Довольно грустно, что имя файла и пути считаются вместе, а не раздельно.
Джон
5
константа MAX_PATH определена как 260, а не 256
phuclv
Папки, тем не менее, имеют максимум не более 247 символов + <null>. См stackoverflow.com/a/15971467/632951
Pacerier
34

В Windows общая длина пути по умолчанию не должна превышать 260 символов ( drive+ :\+ 255 characters of filename+ null terminator+, вероятно, для окончательного \в случае, если путь является каталогом или просто для равномерного округления). Это был пережиток эпохи DOS с 8.3 именами, когда путь из 260 символов - это действительно глубокий путь.

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

  • используйте полные имена файлов с \\?\префиксом, таким образом вы можете использовать максимум 32767 символов в пути
  • переименуйте папки в пути, чтобы сделать его короче
  • Смонтируйте папку, содержащую файл, в символ диска с помощью subst/ mountvol/ diskmgmt.msc . Таким образом, вы можете использовать максимум 255 символов для вашего имени файла
  • создайте соединение / символическую ссылку на другую более мелкую папку на пути. Вы не можете создавать ссылки на буквы дисков, следовательно, вы не можете получить имена файлов, если вы использовали метод монтирования

Начиная с Windows 10 , есть еще один вариант , путем удаления ограничения MAX_PATH § . Вы можете включить его, установив HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabledв реестре или выбрав Конфигурация компьютера> Административные шаблоны> Система> Файловая система> Включить длинные пути NTFS в групповой политике.


Подробнее:

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

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

phuclv
источник
Спасибо, Дэвид написал первым, и это сработало, но вы включили ресурсы, так что +1.
Джон
1
Аналогичное решение заключается в использовании соединения. Проверьте schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
Urhixidur
1
Я бы предпочел использовать этот ответ тоже. Таким образом, вы можете хранить свои файлы там, где хотите, и при этом иметь возможность называть их так, как хотели бы. Кроме того, когда вы копируете их на свое устройство, это, скорее всего, не будет заботиться о глупом ограничении Windows, поскольку они имеют очень плоскую файловую иерархию и могут даже не использовать имя файла напрямую (например, iPhone / iPad / iEtc использует hex символы для имен файлов и перекрестные ссылки на индексный файл).
phyrfox,
Максимальное количество символов для имени файла составляет 255 символов, а не 256
Edd
@Добавить 255 символов + нулевое окончание
phuclv
0

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

грубоватый
источник
нет, это не позволит вам сохранять файлы длиннее 255 символов, так как это ограничение файловой системы
phuclv
однако путь может быть немного длиннее (или намного длиннее после снятия ограничения MAX_PATH)
phuclv