Один из наших клиентов обычно использует очень длинные имена путей (несколько вложенных папок с длинными именами), и мы регулярно сталкиваемся с «проблемами обучения пользователей», чтобы сократить путь до менее чем 260 символов.
Имеется ли техническое решение, можем ли мы щелкнуть какой-то переключатель в Windows 7 и Windows 2008 R2, чтобы сказать: «Да, просто проигнорируйте эти исторические проблемы и сделайте так, чтобы имя пути +260 символов работало».
PS Я прочитал и был полностью не объединен именами файлов, путей и пространств имен
windows
windows-server-2008
windows-7
ntfs
Кристофер Эдвардс
источник
источник
Ответы:
Методы есть, но пока Microsoft не перекодирует виджет файлового браузера, мы в значительной степени застряли на этой старой проблеме. Это неоптимально, но так оно и есть.
источник
Просто упоминания об уловке, которую я здесь пока не вижу.
Возьмите этот файл, например:
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
команду так:Теперь вы можете получить доступ (и удалить, переместить и т. Д.) К файлу таким образом:
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
и потерпит неудачу странным образом, если константа внезапно изменится. (Переполнение буфера, повреждение кучи и т. Д.)источник
subst
использованию соединений каталогов, который может быть более удобным для очистки, если вы просто хотите внести несколько быстрых изменений. Я использую Link Shell Extension , но вы можете просто использоватьmklink
команду следующим образом:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.Вы можете обойти это ограничение, используя обозначение \\? \ C :. Это некрасиво, но поддерживает длину файла до 2 ^ 15.
http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath
источник
c:\usr-data
на `c: \ Users \ VeryLongUserName \ LongFolderName` и сказать ему, чтобы использовать первое, но если он регулярно называет папки из 40 символов, то это не поможет ...У Microsoft теперь есть доступное исправление для этого, начиная с Windows 10, что объясняется в статье MSDN « Имена файлов, пути и пространства имен» .
darthcoder уже ответил подробностями об обходе
\\?\C:
нотации, но теперь есть раздел реестра, поHKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
которому можно удалить ограничения MAX_PATH для одной системы. В статье также упоминается поддержка управления групповой политикойComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
для организации или для групповой реализации, если это необходимо.источник