Назад | Перейти на главную страницу

Проблема MS Windows - «Имя файла или расширение слишком длинное»

Я запускаю Microsoft Windows на нескольких своих машинах. Я не знаю, знают ли многие об этой проблеме в ОС, но у вас не может быть очень длинных имен файлов, насколько я знаю, у Linux могут быть более длинные имена, я никогда не сталкивался с этой проблемой на своих машинах Linux.

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

Есть ли программный инструмент для сокращения папок или имен файлов, которые в Windows оказались слишком длинными?

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

Я просто упомянул трюк, о котором я здесь еще не упоминал.

Возьмем, к примеру, этот файл:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

Этот полный путь к файлу составляет 290 символов. Оболочка (проводник Windows) и большинство утилит командной строки, вероятно, не позволят вам прикоснуться к ней.

Использовать subst команда так:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

Теперь вы можете получить доступ к файлу (а также удалить, переместить и т. Д.) Следующим образом:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

И теперь это имя файла составляет всего ~ 235 символов или около того, поэтому вы больше не столкнетесь с проблемой «Имя файла слишком длинное».

В Windows API есть печально известная константа, известная как MAX_PATH. MAX_PATH - 260 символов. Файловая система NTFS фактически поддерживает пути к файлам длиной до 32 767 символов. И вы по-прежнему можете использовать имена путей длиной 32 767 символов, получая доступ к Unicode (или «широким») версиям функций Windows API, а также добавляя к пути префикс \\?\.

MAX_PATH был высечен в камне очень долго время назад в мире Windows. Я думаю, что это как-то связано со стандартами ANSI в то время ... но это одна из тех вещей, которые Microsoft очень сложно изменить сейчас, поскольку теперь у нас есть тысячи программ и приложений, в том числе написанных самой Microsoft, которые используют MAX_PATH и потерпел бы неудачу по-новому, если бы константа внезапно изменилась. (Переполнение буфера, повреждение кучи и т. Д.)

Видеть http://www.ratsauce.co.uk/notablog/longfilenames.asp

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

JR

Часто вы можете заархивировать файлы в архив, чтобы обойти ограничение по длине при перемещении файловых структур с глубокими / длинными именами с одного компьютера на другой.

Как упоминалось ранее, можно создать zip-файл.

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

Более дорогостоящим решением может быть создание зеркала со вторым жестким диском.