Просто упоминания об уловке, которую я здесь пока не вижу.
Возьмите этот файл, например:
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 Explorer) и большинство утилит командной строки, вероятно, не позволят вам прикоснуться к ней.
Используйте 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
и потерпит неудачу странным образом, если константа внезапно изменится. (Переполнение буфера, повреждение кучи и т. Д.)