Альтернатива Windows Explorer для длинных путей

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?

Тим
источник
1
Какую файловую систему вы использовали для общего раздела (FAT32, NTFS)?
Джеймс П,
1
@James: ntfs ...
Тим
Я бы спросил, зачем вам эта длина пути или глубина? Решение того, что привело к достижению лимита 259, вероятно, проще, чем заставить Windows работать вокруг него.
cjb110

Ответы:

30

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

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

(К путю добавлен 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 или в проводнике выглядит неправильно, так как символы Юникода не будут заменены обратно.)


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

josh3736
источник
Кажется, что этот ответ говорит: «Не существует программного обеспечения, которое делает то, что вы ищете», но не явно
Аарон
5

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

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

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

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

введите описание изображения здесь

Рэндольф Ричардсон
источник
Благодарность! (1) Я пробовал FAR раньше. Есть два вопроса. Я чувствую, как темно-синий напрягает мои глаза, так что это можно изменить? Также мне интересно, как выбрать приложение для открытия файла, который можно либо не распознать, либо открыть в нескольких разных приложениях. (2) Я обнаружил, что не только Windows Explorer, но и другое программное обеспечение страдают от слишком длинных путей. Например, в Firefox я хотел бы сохранить веб-страницу в каталоге, но я по-прежнему не могу открыть каталог, если его имя или путь слишком длинные. Firefox также полагается на Windows Explorer? Как я могу решить эту проблему тоже?
Тим
Да, цвет можно изменить: F9 (строка меню), «O» (меню параметров), «L» (цвета).
Рэндольф Ричардсон
Я не совсем понимаю второй вопрос о «... как выбрать приложение для открытия файла ...», но если вы нажмете Shift-Enter для файла, он будет зависеть от файловых ассоциаций Windows, чтобы открыть его (вместо этого попытки найти встроенную функцию или плагин FAR Manager для ее обработки).
Рэндольф Ричардсон
Что касается вашего последнего вопроса, я заметил, что FAR Manager, кажется, иногда может обрабатывать несколько более длинные пути. Я не уверен, почему это так, но я подозреваю, что проблема, с которой вы сталкиваетесь, может быть ограничением самой ОС Windows.
Рэндольф Ричардсон
1
Используйте Shift-Enter, что приведет к попытке Windows открыть его; так как он будет не распознан, вам будет предложено обычное приглашение выбрать приложение.
Рэндольф Ричардсон
4

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

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

Скриншот Explorer ++

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

Cubicexplorer скриншот

Juhele
источник
Благодарность! Я обнаружил, что не только Windows Explorer, но и другое программное обеспечение страдает от слишком длинных путей. Например, в Firefox я хотел бы сохранить веб-страницу в каталоге, но я по-прежнему не могу открыть каталог, если его имя или путь слишком длинные. , Firefox также полагается на Windows Explorer? Как я могу решить эту проблему тоже?
Тим
1
@Tim: Вы можете столкнуться с ограничением, накладываемым дизайном самой Windows. Я также заметил, что приглашение DOS даже имеет проблемы с очень длинными путями, хотя я могу немного углубиться, используя эти уродливые имена в стиле «8.3» (например, «C: / PROGRA ~ 2 / SPYBOT ~ 1 /») , Однако одна приятная особенность заключается в том, что смешивание этих более коротких путей 8.3 с более длинными путями, кажется, прекрасно работает в большинстве приложений.
Рэндольф Ричардсон
@Randolf: Спасибо! Я попробовал программное обеспечение, рекомендованное в ваших сообщениях и постах Джухеле. За исключением FAR, ни один из них не может получить доступ к длинному пути, в то время как FAR может открыть такой каталог, он не может открыть файл под ним. Является ли проблема «Длинного пути» присущей ОС Windows, независимо от того, какая программа просматривает каталоги? Если да, значит ли это, что нет способа обойти это?
Тим
@Tim: Я считаю, что вы подтвердили проблему с ограничением в самой Windows. Можно ли использовать FAR Manage для просмотра файла (клавиша F3 после выделения файла)? Как насчет использования Enter (без Shift)? (Если вы можете просмотреть его, то вы также можете скопировать его в другое место, где Windows может использовать его - хотя это утомительно, оно по крайней мере позволяет получить доступ к файлу.)
Рэндольф Ричардсон,
4
Я только что попробовал Explorer ++ и Cubic Explorer. Но оба, похоже, не поддерживают длинные имена путей.
xaedes
2

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

Элуан Керилл-Эвен
источник
Brilliant! Скрытый драгоценный камень, который у меня был на моем компьютере, и я просто не думал попробовать. Бонус: у меня был длинный путь к сетевому ресурсу - и я заметил, что производительность в 7 Zip File Manager очень высокая по сравнению с низкой скоростью в Windows Explorer
Omaer
0

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

Рог
источник