Я запускаю 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 на работе, который бы делал именно это.
Более дорогостоящим решением может быть создание зеркала со вторым жестким диском.