Тільки згадуючи про трюк, якого я ще не бачу тут згадати.
Візьмемо, наприклад, цей файл:
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 (або "широкої") функцій API Windows, а також встановивши префікс шляху \\?\
.
MAX_PATH
була встановлена в камені дуже давно у світі Windows. Я думаю, що це має щось спільне з стандартами ANSI на той час ... але це одна з тих речей, які Microsoft дуже важко змінити зараз, оскільки зараз у нас є тисячі програм і додатків, включаючи деякі, написані самим Microsoft, які використовують MAX_PATH
і провалився б дивними новими способами, якби константа була раптово змінена. (Переповнення буфера, пошкодження купи тощо)