更新:
Windowsエクスプローラだけでなく、他のソフトウェアもパス名が長すぎることに悩まされています。たとえば、FirefoxでWebページをディレクトリに保存しても、名前またはパス名が長すぎると、保存できません。 FirefoxもWindows Explorerに依存していますか?どうすればその問題も解決できますか?
2つの返信で推奨されているソフトウェアを試しました。それらのどれも長いパスにアクセスできません。ディレクトリを参照するプログラムに関係なく、ロングパスの問題はWindows OSに固有のものですか?はいの場合、それを回避する方法がないということですか?
オリジナル:ラップトップに2つのOSをインストールしています:Windows 7とUbuntu 10.10。それらはパーティションを共有します。
Ubuntuでは、Nautilusを使用して、共有パーティションのパス階層の非常に深い場所にディレクトリを作成できます。ただし、Windowsに切り替えると、Windowsエクスプローラーは、深すぎる、つまりパス名が長すぎるディレクトリへのアクセスを許可しません。
また、Windows Explorerは、Ubuntuで作成されたディレクトリやファイル名に特殊文字を含むファイルやディレクトリにアクセスできないようです。
Windowsで何が問題を解決できるのでしょうか。たとえば、Windows Explorerを置き換える他のソフトウェアはありますか?
NTFSは約32,000文字のパスを許可しますが、 Win32 APIのパス長制限は259文字 を見つけました。
Windows API([リンクされたドキュメント]で説明されているいくつかの例外を除く)では、パスの最大長は
MAX_PATH
で、260文字として定義されています。
(さらに、パスにNULL
終了文字が追加され、259の使用可能な文字が与えられます。)
エクスプローラー(および他のほとんどすべてのWindowsアプリ)は、ファイルシステムアクセスのためにWin32 APIに依存しているため、この制限を回避することは実用的ではありません可能:
Windows APIには、32,767文字の最大合計パス長の拡張長パスを許可するUnicodeバージョンも備えた多くの関数があります。このタイプのパスは、バックスラッシュで区切られたコンポーネントで構成され、それぞれが
lpMaximumComponentLength
関数のGetVolumeInformation
パラメーターで返される値までです(この値は通常255文字です)。拡張パスを指定するには、「\\?\」接頭辞を使用します。たとえば、「\\?\ D:\非常に長い道のり」.
残念ながら、エクスプローラウィンドウに\\?\D:\very long path
と入力することはできません。アプリケーションは、これらのAPIを利用して非常に長いパス名を処理するように設計する必要があります。
Windowsで拡張パスにアクセスする1つの方法は、Windowsの* nixエミュレーション層である Cygwin をインストールすることです。私のテストでは、CygwinはMAX_PATH
による制限を受けていないようです。 bashとviでは、2,000文字のパスに問題はありませんでした。
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文字を使用して作成できます。これは、読み取り時に置換されます。LinuxまたはエクスプローラーでこれらのCygwinで作成されたファイルを表示します。 Unicode文字は元に戻されないため、正しく表示されません。)
それはすべて、非常に長いパスを必要とするあなたは何をしていますか?多分あなたはあなたがしていることを再評価し、長い道を避けることによってあなたの人生をより簡単にすることができるでしょう。たぶん、あなたは とにかく長いパスは必要ありません です。
テキストモードのアプリケーションが好きな場合、Windowsエクスプローラーよりも深いディレクトリ構造をサポートできることがわかっているので、FAR Managerに興味があるかもしれません(ただし、基盤となるWindows OS自体によって課されるいくつかの制限があります)。
これは、32ビット/ 64ビットのネイティブWindowsアプリケーションで、Norton Commander(DOSがPCのオペレーティングシステムの最高の支配者であった時代から)と同様に、ディレクトリ(別名「フォルダ」)とファイル管理を専門としています。
Windowsエクスプローラーの代替として使用されているという報告を見たこともありますが、アプリケーションとして使用するという点で非常に満足しているので、これは試していません。 以下に示すスクリーンショットは、右側にある「ディレクトリツリー」機能を特徴としています。これは、F9(メニューバー)、[R](右パネルメニュー)の順に押すとアクティブになります。 「T」(ツリーパネルモード)で、特に興味があるかもしれません...
FAR Manager(フリーでオープンソース)
http://www.farmanager.com/
いくつかの代替案がありますが、ディレクトリの深さを確認していません。
私は試しました Explorer ++ 、オープンソース、ポータブル
そして Cubic Explorer を今すぐ使用してください、またオープンソース:
7-Zip file manager を試しましたが、長いパスでも問題なく動作するようです。
Total Commander を試しましたか?それはシェアウェアです。長いパス名を扱うようで、一般的に非常に便利なファイルマネージャです。
ダブルコマンダー はオープンソースに対応しています。パスを作成/編集していて、古いNTFSパス長の制限(260文字)を超えようとしているときに、続行するかどうかを尋ねます。
Directory Opusは、優れたExplorerの代替手段です。彼らはこの状況を処理するかもしれません。