« 「危ないです」は正しいです。変な日本語ではないです。 | メイン | MacBookの旧型を衝動買い。このスペックで8万円台ならお買い得だけど… »

Windowsのファイル名の長さ制限。255文字まで作れるけれど、フォルダを深く掘るともっと短い長さで限界に。

《2009年10月25日》 《カテゴリー:Windows雑記

フォルダの“入れ子”はどこまで可能?
http://r25.jp/b/report/a/report_details/id/110000007809?r25pc=af004

この記事にもあるように、
Windowsではパス名の長さ制限があるため、
あまり深い階層のフォルダを作れない。

ファイル名/フォルダ名の長さは255文字が上限。
それだけでなくパス名が260文字という制限があるので、
実際には255文字の名前を付けられるのは、
ルートディレクトリに限られる。

パス名というのはドライブ名やフォルダ名も含めた名前のことで、
CドライブのABCというフォルダにあるDEF.TXTというファイルなら、
「C:¥ABC¥DEF.TXT」と表す。
DEF.TXTのファイル名は7文字だけど、
パス名は「C:¥ABC¥」が加わるので14文字になる。

255文字という制限だけど、
半角・全角は関係ない。
ファイル名はユニコードで保存されるので、
半角と全角が区別されない。

200文字以上の名前を付けられるなら大丈夫、
と思われがちだが、
うちではこの制限が問題になることがしばしばある。
このブログは「Windows Live Writer」というソフトで書いている。
Live Writerは編集中の記事の題名をファイル名として、
自動的にHDDに記事を保存するのである。
自分は記事に長い名前を付けることが多いので、
自動保存のときにパス名の長さ制限に引っかかり、
「ファイルを作成できません」みたいなエラーが出る。
これ、パス名の長さ制限について知らなければ、
故障か何か深刻なトラブルと勘違いするかもしれない。

さて、260文字という制限は、
Windowsのフォルダを表示する「エクスプローラ」の仕様であり、
(またWindowsのAPIの制限で他のアプリも影響を受ける)
HDD自体はいくらでも深い階層のフォルダを作成できる。
たとえば、ファイル名が100文字のファイルAを作り、
フォルダ名が100文字のフォルダBの中に移動する。
このフォルダBを、名前100文字のフォルダCに移動する。
さらにフォルダCを長い名前のフォルダDに移動する。
これを繰り返せば260文字の制限を超えたパス名ができてしまう。
しかし、エクスプローラは260文字以上のパス名を受け付けないので、
深い階層のフォルダを開こうとしてもエラーが出る。
HDD上には確かに存在するのに開くことができないファイルを作れるのだ。

エクスプローラがフォルダを移動するとき、
その中身のパス名をすべてチェックしていないから、
こんな珍現象が起きる。

なお、これは知識として知っていればいいだけの話で、
まねをしてはいけません。
アクセスできず、削除もできない幽霊フォルダができることがあります。
自分もこの記事を書くために実験をして、
消えないファイルができてしまいました(笑)

image

もしフォルダを深く掘りすぎて消せなくなったら、
逆の順にフォルダを移動して、
パス名制限に引っかからないようにしてから削除します。

あと、こんなエラーメッセージを初めて見ました。
ファイル名が長いとパス名制限でごみ箱に移動できない。
その場で完全削除されることがあるのですね。

image

投稿者 yasu : 2009年10月25日 10:58 | このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク はてなブックマーク - Windowsのファイル名の長さ制限。255文字まで作れるけれど、フォルダを深く掘るともっと短い長さで限界に。

トラックバック

このエントリーのトラックバックURL:
http://www.center-left.com/cgi-bin/mt4/mt-tb.cgi/1560


コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)