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

Обновить:

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

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

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

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

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

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

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

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

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

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

В Windows API есть много функций, которые также имеют версии Unicode, чтобы разрешить длину расширенной длины для максимальной длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных lpMaximumComponentLength , каждый до значения, возвращаемого в параметре GetVolumeInformation функции 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 обрабатывает перенаправление пути («точка повторной обработки») прозрачно.

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

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


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

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

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

Снимок экрана Explorer ++

И curretly использовать Cubic Explorer , также openource:

Скриншот Cubicexplorer

  • Есть также портативная версия кубического исследователя

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

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

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

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

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

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

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

  • Фантомный жесткий диск после развертывания последнего изображения Windows 7 из WDS
  • Проводник Windows Explorer для обеспечения функциональности с вкладками в Windows 7?
  • Как предотвратить открытие текущей папки пользователя при запуске Windows Explorer?
  • Как сделать ярлык для ftp-сайта открытым в Windows Explorer не IE
  • Ярлык клавиатуры, чтобы скрыть / показать навигацию Explorer
  • Windows Исследуйте альтернативу для Windows 7 (браузер файлов, такой как XP)
  • В Vista Explorer, как я могу найти содержимое всех файлов в каталоге для слова?
  • Отключить открытие браузера из адресной строки проводника Windows.
  • Может ли панель предварительного просмотра Windows 7 Explorer не блокировать редактирование документов Acrobat и Word?
  • Как удалить папку пользователя в Windows 8.1?
  • Как добавить элемент контекстного меню проводника Windows с настраиваемыми функциями?
  • Давайте будем гением компьютера.