日々叢書(この著者ちょこちょこ昔の文章直します。スイマセン)

Windows: フルパス名が長すぎてファイルが削除できない

先日、あるファイルが削除できず、
それを含むフォルダも削除できないという事象がありました。
(なんとかかんとか〜〜 というファイルが見つからない、といわれる)

よく見ると、

 aaaaaaaaaa\bbbbbbbbbbb\ccccccccc...\zzz.txt

のようにフルパス名が長すぎたために起こった事象でした。
この場合、zzz.txt が削除できないために aaaaaaaaaa も削除できません。
この場合個々のディレクトリ名を変名して全体に短くして現象を解消しました。

cd などに焼いてあったファイルをデスクトップに持ってくると、

 C:\Document and Settings\fuc\デスクトップ\

の時点でだいぶ深いので、注意した方がいいかもしれません。

最も長い名前のフォルダは、たとえば、

C:\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d1
(C:\を除いて243文字)

のようです。このフォルダにはファイルは作れません。

最も長い名前のファイルは、たとえば

C:\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d123456789.txt
(C:\ を除いて256文字)

です。これ以上ファイル名を延ばそうとしても延びません。

で、おかしなことに上のファイルは無事に削除できます。
まあ、作れたのだから削除できて当たり前なのですが、
これはこの文の最初の方の「名前が長すぎて削除できない」
というテーゼと対立するような感じがします。

上のファイルを、フォルダ構造ごと C:\a に移動してみます。
くだんのファイルのフルパス名は

C:\a\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j\123456789a123456789b123456789c123456789d123456789.txt

となるはずですが、プロパティが取得できなくなります。
そして、このファイルは削除できず、C:\a をはじめ
このファイルを含むフォルダも削除できなくなります。

このファイルは直接変名もできなくなるので、
中間のディレクトリ名を短くしてやると削除できるようになります。

まとめると、

・名前が長すぎるファイル/フォルダは作ることさえできない
・しかし、ぎりぎり長い名前のファイルを作っておき、
 それをさらに深い階層に移すことで結果的に名前が長すぎるファイルになることがある
・そのようなファイルはアクセスできなくなる
・アクセスできるファイル名の限界は 256 文字である

ということになります。

Last Update : 2004/04/21 12:07