Windowsの「拡張パス」とは?260文字制限を突破する方法を分かりやすく解説

Windowsでファイルを操作していて「パスが長すぎます」というエラーに遭遇したことはありませんか?実は、Windowsには昔からファイルパスに260文字という制限があるんです。

でも安心してください。この制限を突破できる「拡張パス」という機能があります。今回は、拡張パスの仕組みと使い方を詳しく解説しますね。

スポンサーリンク

そもそもパスって何?なぜ制限があるの?

パスとは、ファイルやフォルダの「住所」のようなものです。たとえば「C:\Users\YourName\Documents\Report.docx」というのがパスですね。

Windowsでは、このパスの長さに「MAX_PATH」という制限がかけられていました。具体的には260文字までしか扱えないんです。

なぜこんな制限があるの?

これは1980年代のWindowsの設計から引き継がれてきた古い仕様なんです。当時のコンピュータの性能では、長いパスを扱うのが難しかったという背景があります。

260文字制限の内訳を見てみよう

260文字の内訳は次のようになっています。

  • ドライブ文字(例:C:)→ 2文字
  • 円記号(\)→ 1文字
  • フォルダやファイル名 → 最大256文字
  • 終端文字(目に見えない特殊文字) → 1文字

つまり、実際にフォルダ名やファイル名に使える文字数は、256文字程度ということですね。

どんなときに問題になる?

  • 深い階層のフォルダ構造を作ったとき
  • GitHubなどから長いフォルダ名を含むプロジェクトをダウンロードしたとき
  • Node.jsのnode_modulesフォルダのように、自動的に深い構造が作られるとき

拡張パスって何?どうやって使うの?

拡張パス(Extended-Length Path)とは、通常の260文字制限を大幅に拡張して、最大32,767文字までのパスを扱える特別な機能です。

拡張パスの使い方①:\?\プレフィックスを使う

パスの先頭に「\?\」という記号を付けると、拡張パスとして認識されます。

通常のパス:

C:\Users\YourName\Documents\とても長いフォルダ名\さらに長いフォルダ名\...

拡張パス:

\\?\C:\Users\YourName\Documents\とても長いフォルダ名\さらに長いフォルダ名\...

この「\?\」を付けるだけで、Windowsは「これは長いパスですよ」と理解してくれるわけです。

実際の使用例:

コマンドプロンプトでファイルをコピーする場合

copy "\\?\C:\とても\深い\フォルダ\構造\のファイル.txt" "\\?\D:\バックアップ\"

拡張パスの使い方②:Windows 10/11の設定を変更する

Windows 10バージョン1607以降では、システム設定を変更することで、普通のパス(\?\なし)でも長いパスを扱えるようになりました。

レジストリで設定する方法:

  1. Windows + R キーを押して「ファイル名を指定して実行」を開く
  2. 「regedit」と入力してEnterキーを押す
  3. 次の場所に移動する:
   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  1. 「LongPathsEnabled」という項目をダブルクリック
  2. 値を「0」から「1」に変更する
  3. パソコンを再起動する

グループポリシーで設定する方法:

  1. Windows + R キーを押して「gpedit.msc」と入力
  2. 次の場所に移動する:
    「コンピューターの構成」→「管理用テンプレート」→「システム」→「ファイル システム」
  3. 「Win32の長いパスを有効にする」をダブルクリック
  4. 「有効」を選択してOKをクリック
  5. パソコンを再起動する

これで設定完了です。これ以降は、通常のパスでも長いファイルパスが使えるようになります。

拡張パスの注意点とデメリット

便利な拡張パスですが、いくつか注意すべきポイントがあります。

すべてのアプリが対応しているわけではない

残念ながら、古いソフトウェアや一部のアプリケーションは拡張パスに対応していません。たとえば、Windows Explorerでも一部の操作では制限があります。

パスの自動変換が効かなくなる

「\?\」プレフィックスを使うと、次のような自動変換が無効になります。

  • スラッシュ(/)を円記号(\)に変換する処理
  • 「.」(カレントディレクトリ)や「..」(親ディレクトリ)の展開
  • 相対パスから絶対パスへの変換

つまり、より正確なパス指定が必要になるということですね。

UNCパス(ネットワークパス)の場合は少し違う

ネットワーク上のファイルにアクセスする場合、次のような書き方になります。

通常のUNCパス:

\\ServerName\ShareName\Folder\File.txt

拡張UNCパス:

\\?\UNC\ServerName\ShareName\Folder\File.txt

「\」を「\?\UNC\」に置き換える必要があるんです。

実際に長いパスで困ったときの対処法

設定変更が難しい環境で、今すぐ長いパスのファイルを扱いたい場合はどうすればいいでしょうか?

方法①:ショートカットやジャンクションを使う

深い階層のフォルダに、短い名前でアクセスできる「近道」を作る方法です。

コマンドプロンプトで次のように入力します:

mklink /J C:\短縮 "C:\とても\深い\フォルダ\構造\の\パス"

これで「C:\短縮」という短い名前から、深い階層のフォルダにアクセスできます。

方法②:ネットワークドライブとして割り当てる

深い階層のフォルダを、別のドライブ文字として割り当てる方法もあります。

net use Z: \\127.0.0.1\C$\とても\深い\フォルダ\構造

これで「Z:」ドライブとしてアクセスできるようになり、パスが短くなります。

方法③:robocopyコマンドを使う

Windowsに標準搭載されている「robocopy」というコマンドは、長いパスに対応しています。

robocopy "\\?\C:\長いパス" "\\?\D:\バックアップ" /E

ファイルのコピーや移動が必要な場合は、このコマンドが便利です。

プログラミングで拡張パスを扱う場合

開発者の方向けに、プログラムで拡張パスを扱う際のポイントも紹介します。

Windows APIを使う場合

通常のANSI版API(例:CreateFileA)ではなく、Unicode版API(例:CreateFileW)を使うと、拡張パスがサポートされます。

.NETで使う場合

残念ながら、.NET Frameworkの標準的なファイル操作クラス(FileInfoなど)は、拡張パスに完全対応していない場合があります。Windows APIを直接呼び出すP/Invoke技術が必要になることもあります。

アプリケーションマニフェストの設定

Windows 10以降でアプリを開発する場合、アプリケーションマニフェストに「longPathAware」要素を追加する必要があります。

よくある質問(FAQ)

Q1:拡張パスを有効にすると、既存のアプリが動かなくなりませんか?

A:基本的には問題ありません。拡張パスの設定は、対応しているアプリだけが恩恵を受ける仕組みになっているため、古いアプリはこれまで通り動作します。

Q2:ファイル名自体は何文字まで使えますか?

A:ファイル名(拡張子を含む)自体は、通常255文字が上限です。これはNTFSファイルシステムの制限によるものです。

Q3:設定を有効にしたのに、まだエラーが出ます

A:パソコンの再起動を試してみてください。また、使っているアプリケーション自体が長いパスに対応していない可能性もあります。

まとめ:拡張パスは使いこなせば便利!

Windowsの260文字というパス制限は、現代のファイル管理では不便に感じることも多いですよね。

拡張パスを使えば:

  • 最大32,767文字までのパスが扱える
  • 深い階層のフォルダ構造でも安心
  • Node.jsなどのプロジェクトもスムーズに管理できる

ただし、すべてのアプリが対応しているわけではないので、用途に応じて使い分けることが大切です。まずはレジストリやグループポリシーでシステム設定を変更して、それでも問題が起きる場合は「\?\」プレフィックスやジャンクションを活用してみてください。

長いパスでのトラブルに悩んでいた方は、ぜひこの記事を参考に拡張パスを活用してみてくださいね!

コメント

タイトルとURLをコピーしました