ウィンドウ256文字のパス名の制限


17

長い調査の結果、最新のMicrosoft Windows 7でもパス名は256文字を超えることはできませんでした。NTFSは最大32,000文字のパスを処理できるため、このような愚かな制限がある理由はわかりません。十数年以上問題なく長さ!それを変更する可能性はありませんか?または、それを回避する実用的な解決策はありますか?

長いファイル名を持つ入れ子になった写真ディレクトリのような単純なユースケースでも、260文字はごくわずかです。


1
心配は、パスの長さをハードコーディングした古いプログラムがあるため、長いパスで使用しようとすると面白い方法で爆発するからです。
dsolimano

Linux OSにはこの問題がありますか?
ahorn

回答:


18

マイクロソフトによると:

  • 従来のWindows APIは、最新バージョン用に開発されたアプリケーションでも、パス名を260文字に制限しています。

  • Unicode対応APIを使用するアプリケーションは、最大32767文字を許可する形式のパスを使用できます。ファイル名には接頭辞を付ける\\?\必要があり、絶対パスにする必要があります(例:\\?\c:\dir\fileまたは)\\?\UNC\server\share\file。さらに制限があります。詳細についてはリファレンスを参照してください。

深いファイル階層を作成して使用し、ファイル名の長さのために爆破するアプリケーションを使用する必要がある場合は、いくつかの方法を試すことができます。

  • mklinkコマンドを使用してシンボリックリンクを作成し、それらを使用するパスをアプリケーションに渡します。

  • このsubstコマンドを使用して、ドライブ文字をディレクトリに割り当てます。

  • 深いディレクトリからアプリケーションを起動し、短い相対パスを渡します。

  • その8.3エイリアス(でいくつかの長い名前を交換しmicros~1、あなたが持っている場合、それらはまだWindows 7の中に存在すると仮定すると、)micros~1と並んでmicros~2、私は、これはどの伝える方法がわかりません。おそらくDOSを実行command.comします(Windows 7でも引き続き実行できると仮定します)。


3
さて、Win7のWindows Explorerでさえ、従来のAPIを使用しているようです!それは残念だ。

3
さらにバックスラッシュ `\\?\` :-)
リングØ10年

@ Gilles、micros〜1およびmicros〜2はシステム全体で標準化されていますか、それともランダムですか?
パセリエ

@Pacerierどちらのディレクトリが最初に作成されたかはmicros~1、が取得するため、本質的にランダムです。
ジル「SO-悪であるのをやめる」

0

すべてのフォルダーとファイルに短い(8.3)名を使用できます。

ただし、それらが有効になっていることを確認する必要があります。

長いファイル名は、短いMS-DOS(8.3とも呼ばれる)スタイルの命名規則を超えるファイル名と見なされます。通常、Windowsは長いファイル名を特別なディレクトリエントリとしてディスクに保存しますが、特定のファイルシステムによっては、パフォーマンス上の理由でシステム全体で無効することができます。長いファイル名を作成すると、Windowsは、8.3エイリアスと呼ばれる短い8.3形式の名前を作成し、ディスクにも保存する場合があります。この8.3エイリアスは、指定されたボリュームに対して無効にできます。

(私の大胆な)

また、長い名前から短い名前を取得するために、いくつかのコードを記述する必要があります。

ソース


2
lol ... Windows 95では、256文字の長いファイル名を持つこの超大型FAT32をすべて入手したときのことをよく覚えています!それは、(これらの日に)素晴らしかったと私は本当に、ファイル名の制限がまだで問題になる可能性があることショックを受けていますこれらの日。2010!Windowsは本当に古風です

0

NTFSのファイル/ディレクトリ名は、長さがバイトとして保存されるため、255個のUnicodeコードポイントに制限されています。ただし、総パス長に固有の制限はありません。

多くのWin32 API呼び出し(エクスプローラーシェルを含む)呼び出しには、260-1の長さ制限があります。他の一部の呼び出しでは、\\?\プレフィックスを使用して最大32Kを取得する機能があります(ボリューム名がKernel-landで置き換えられるため、少し少なくなります)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.