回答:
最大パス長(MSDNから)
Windows API(次の段落で説明するいくつかの例外を除く)では、パスの最大長はMAX_PATHであり、これは260文字として定義されています。ローカルパスは、ドライブ文字、コロン、バックスラッシュ、バックスラッシュで区切られたコンポーネント、および終端のヌル文字の順序で構成されます。たとえば、ドライブDの最大パスは「D:\ <256文字のパス文字列> <NUL>」です。「<NUL>」は、現在のシステムコードページの非表示の終了ヌル文字を表します。(ここでは文字<>は見やすくするために使用されており、有効なパス文字列の一部にすることはできません。)
XPファイルパス-250文字
Vistaファイルパス-260文字
Windows XPのクリーンインストールでの最長パスは152文字です。
Windows Vistaのセミクリーンインストールでの最長パスは195文字です。
Windows XPでは、255文字までのファイル名を使用できます
Windows Vistaでは、最大260文字を含むさらに長いファイル名を使用できます。
「古典的な」制限は260の文字:drive letter
+ :\
+ 255 characters of filename
+ \
(または丸め)+ null terminator
他の回答で述べたように
ただし、実際の内部制限は32767文字です。これは\\?\
、完全修飾パスを取得するために追加することで実現できます
Windows APIには、最大合計パス長が32,767文字の拡張長パスを許可するUnicodeバージョンもある多くの関数があります。このタイプのパスは、バックスラッシュで区切られたコンポーネントで構成され、それぞれ
lpMaximumComponentLength
がGetVolumeInformation
関数のパラメーターで返される値(この値は通常255文字)までです。拡張長パスを指定するには、"\\?\"
プレフィックスを使用します。たとえば、"\\?\D:\very long path"
。
何らかの理由で完全修飾パスを使用できない場合は、subst
/ を使用してドライブ文字にマウントするdiskpart
か、ジャンクション / シンボリックリンクを作成してパスを短縮することにより、より深いディレクトリにアクセスできます。
Windows 10以降、MAX_PATH
制限は削除されましたが、デフォルトではありません
Windows 10バージョン1607以降、
MAX_PATH
一般的なWin32ファイルおよびディレクトリ機能から制限が削除されました。ただし、新しい動作をオプトインする必要があります。https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file