【Windows】パスの260文字制限の解除方法

以前ファイルサーバーの移行を行った際にDirコマンドでファイル数の一致を確認したのですが、robocopyコマンド結果をみてもエラーがでていない状態にもかかわらず、移行元と移行先で実行したDirコマンド結果ではファイル数が一致しないということがありました。この時エクスプローラーからもトップフォルダのプロパティからファイル数とフォルダ数も確認していたのですが、同じく一致しないことがありそれについて調べた内容をまとめておきます。

スポンサーリンク

すべてのフォルダ/ファイルを表示できない理由

そもそも Dir コマンドでは通常すべてのフォルダ/ファイルを確認する事ができないのです。すべての階層が表示されていないにも関わらず、コマンド結果ではエラー等も出力されないため、知らなければすべて出力されているものと思ってしまうかもしれないのです。(260 文字を超えたパスはフォルダ名の途中であろうが切れたまま出力されます。)

これは、Windows でサポートされているパス長がデフォルトで 260 文字までの制限となっており、それを超える長さのパスは表示することができないためです。win32系アプリケーションの場合、上記の仕様が適用されるのでエクスプローラーからプロパティを開いても 260 文字までのパスの範囲でのフォルダ/ファイル数までしか確認ができません。

これを回避するためには、最下層まで確認できる位置で特定の階層でフォルダをマウントする、もしくは 260 文字制限のレジストリ設定を解除した状態で Get-ChildItem -Recurse コマンドで確認する方法になります。
今回はこの 260 文字制限を解除方法は、 Windows10 Version 1607 以降でサポートされている方法となります。

LongPathsEnabled設定の確認方法

レジストリ キーの値の確認
レジストリ「LongPathsEnabled」設定が “0” で無効となります、(既定)

レジストリの確認

LongPathsEnabled設定の変更方法

レジストリ キーの値の変更
レジストリ「LongPathsEnabled」設定を “1” へ変更します。

レジストリ キーの値の確認

これにより260文字制限は解除することができます。