24

Обновить:

  1. Я обнаружил, что не только Windows Explorer, но и другое программное обеспечение страдает от слишком длинных путей. Например, в Firefox, когда я сохраняю веб-страницу в каталоге, я все равно не могу сделать это, если ее имя или путь слишком длинные. Firefox также полагается на Windows Explorer? Как я могу решить эту проблему тоже?

  2. Я попробовал программное обеспечение, рекомендованное в двух ответах. Никто из них не может получить доступ к длинному пути. Является ли проблема «Длинного пути» присущей ОС Windows, независимо от того, какая программа просматривает каталоги? Если да, значит ли это, что нет способа обойти это?

Оригинал: на моем ноутбуке установлены две ОС: Windows 7 и Ubuntu 10.10. Они делят раздел.

В Ubuntu, используя Nautilus, я могу создавать каталоги, которые расположены очень глубоко в иерархии путей в общем разделе. Но при переключении в Windows проводник Windows не разрешает доступ к каталогам, которые расположены слишком глубоко, то есть имеют слишком длинный путь.

Также Windows Explorer не может получить доступ к файлам и директорам, созданным в Ubuntu, со специальными символами в именах каталогов и файлов.

Мне было интересно, что может решить проблему в Windows? Например, есть ли другое альтернативное программное обеспечение для замены Windows Explorer?

5 ответов5

29

Хотя NTFS допускает пути длиной около 32 000 символов, вы обнаружили ограничение длины пути в 259 символов в Win32 API.

В Windows API (за некоторыми исключениями, которые обсуждались в [связанном документе]), максимальная длина пути равна MAX_PATH , которая определяется как 260 символов.

(Дополнительно к пути добавлен символ завершения NULL , что дает нам 259 используемых символов.)

Поскольку Explorer (и почти все другие приложения Windows) полагаются на Win32 API для доступа к файловой системе, обойти это ограничение не практично, даже если это возможно:

Windows API имеет много функций, которые также имеют версии Unicode, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов , разделенных обратной косой черты, каждый до значения , возвращаемого в параметре lpMaximumComponentLength функции GetVolumeInformation (это значение обычно 255 символов). Чтобы указать путь расширенной длины, используйте "\\?\" префикс. Например, "\\?\D:\очень длинный путь ".

К сожалению, вы не можете просто набрать \\?\D:\very long path к окну проводника. Приложение должно быть разработано так, чтобы использовать преимущества этих API и обрабатывать очень длинные пути.

Один из способов доступа к путям расширенной длины в Windows - установить Cygwin, слой эмуляции * nix для Windows. В моем тестировании Cygwin не ограничивался MAX_PATH ; У bash и vi не было проблем с путями длиной 2000 символов.

Имейте в виду, что даже если вы можете использовать bash для просмотра путей расширенной длины, вы, вероятно, не сможете открывать файлы по этим путям в обычных приложениях Windows. Например, если вы наберете « notepad а рабочий каталог - это путь расширенной длины, вы получите

Ошибка: текущий рабочий каталог имеет более длинный путь, чем разрешено для рабочего каталога Win32. Не могу запустить собственное приложение Windows отсюда.

И пытается notepad "\\?\D:\very long path\file.txt" тоже не работает; он запускается, а просто говорит "Не удается найти файл...". Попытка повторить то же самое с Notepad++ приводит к сбою. (Вероятно, переполнение буфера.)

Другой доступ к определенным файлам, зарытым глубоко внутри пути расширенной длины, - сократить сам путь путем создания точки соединения NTFS. Из командной строки с повышенными правами:

D:\> mklink /J jct "\\?\D:\very\long\path"

Теперь вы можете получить доступ к содержимому D:\very\long\path\ из D:\jct\ . Вы не столкнетесь с проблемами длины пути, потому что для Explorer и других приложений путь - просто D:\jct\ (или любой другой). Драйвер NTFS обеспечивает прозрачное перенаправление пути ("точка повторной обработки").

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

Что касается специальных символов (" * : < > ? \ |), это просто не ходи. Эти символы имеют особое значение в Windows, поэтому их невозможно использовать в путях. (Cygwin позволяет создавать файлы со специальными символами, но делает это путем замены символов специальными символами Unicode, которые затем заменяются при чтении. Просмотр этих созданных Cygwin файлов в Linux или в Explorer не будет выглядеть правильно, так как символы Unicode не будут заменены обратно.)


Все это говорит, что ты делаешь, что требует очень долгих путей? Возможно, вы могли бы облегчить свою жизнь, переоценив то, что делаете, и избегая долгих путей. Скорее всего, вам не нужны такие длинные пути.

5

Если вам нравятся приложения в текстовом режиме, тогда FAR Manager может быть вам интересен, поскольку я обнаружил, что он может поддерживать более глубокие структуры каталогов, чем Windows Explorer (хотя все еще существуют некоторые ограничения, накладываемые самой ОС Windows).

Это родное 32-битное /64-битное Windows-приложение, которое, как и Norton Commander (со времен, когда DOS был верховным правителем операционных систем на ПК), специализируется на работе с каталогами (так называемая папка) и управлении файлами

Я даже видел сообщения о том, что он используется в качестве замены для Windows Explorer, но я не пробовал этого, потому что я весьма доволен этим в контексте использования его в качестве приложения. Снимок экрана, который я включил ниже, показывает функцию "Дерево каталогов" с правой стороны, которая активируется нажатием F9 (строка меню), затем "R" (меню правой панели), а затем "T" (режим панели дерева), который может представлять для вас особый интерес ...

  FAR Manager (бесплатный и с открытым исходным кодом)
  http://www.farmanager.com/

4

Есть несколько альтернатив, но я не проверял, насколько глубоко могут быть каталоги.

Я пробовал Explorer ++, с открытым исходным кодом и портативный

Скриншот Explorer ++

и точно используйте Cubic Explorer, также с открытым исходным кодом:

Cubicexplorer скриншот

1

Я попробовал файловый менеджер 7-Zip, и он, кажется, хорошо работает с длинными путями.

0

Вы пробовали Total Commander? Это условно. Кажется, он имеет дело с длинными путями и является очень полезным файловым менеджером в целом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .