Windows の tree コマンドの話。
tree コマンドは次のように /F オプションを付けると、各フォルダにあるファイル名も出力する。
tree /F
しかし、場合によってファイル名が出力されないことがある。
フォルダも含めたファイル名のパスの長さによって、出力されたりされなくなったりするようである。
具体的にはパスの長さが260文字以上となった場合に、ファイル名が出力されなくなる。
(259文字までは出力された)
これは Windows では全体のパスの長さが260文字に制限されていることから来ているのだろう。
(260文字以上はアウト。259文字以下にしなければならない)
検証
パスの長さが259文字と260文字になるファイルを準備して tree コマンドの動きを確かめる。
準備したファイルは次の2つ。
「ファイル名の文字数制限テスト1~」がパスの長さが259文字になるファイル。
「ファイル名の文字数制限テスト2~」がパスの長さが260文字になるファイル。
C:\Users\username> dir /B C:\test\length ファイル名の文字数制限テスト1_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv.txt ファイル名の文字数制限テスト2_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw.txt
tree コマンドを実行した結果、パスの長さが259文字のファイルは出力されたが、260文字のファイルは出力されなかった。
C:\Users\username> tree /f C:\test
フォルダー パスの一覧
ボリューム シリアル番号は 9Z99-ZZ9Z です
C:\TEST
└─length
ファイル名の文字数制限テスト1_12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv.txt
対処法はない(と思う)。
パスが長くなり過ぎないよう気を付けるしかない。