連載
» 2021年06月02日 05時00分 公開

「パスが長すぎ」エラーでファイル操作ができない【Windows 10トラブル対策】Tech TIPS

Windows OSでファイルを操作しようとして「対象のパスが長すぎます」というエラーに遭遇したことはないだろうか。なぜこのようなエラーが発生するのか、どうすれば解決できるのか、その方法を幾つか紹介する。

[島田広道,デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

「パスが長すぎます」エラーを解決するには?

対象:Windows 8.1/Windows 10、Windows Server 2012/2012 R2/2016


 Windows OSのエクスプローラなどでファイルを操作しているとき、次のような警告またはエラーメッセージに遭遇することはないだろうか?

  • 「対象のパスが長すぎます」
  • 「ファイル名の長さは、対象のフォルダーに対して長すぎる可能性があります。」
  • 「指定されたファイル名は、無効かまたは長すぎます。」
  • 「フォルダーには名前が長すぎる項目が含まれていて、ごみ箱に移動できません。」
  • 「ソースのファイル名の長さは、ファイルシステムでサポートされている限度以上の可能性があります。」
  • 「ディレクトリ名が無効です」
explorer.exeからの「ディレクトリ名が無効です」というエラーメッセージ 「ディレクトリ名が無効です」というエラーメッセージ

 操作したファイルの「パス」の長さがある制限を超えると、こうしたエラーメッセージが表示され、「ファイルの削除時にごみ箱に移動できない」「別のフォルダへ移動できない」「ファイル名の変更時に自動的に短縮される」「ファイルのプロパティが開けない」といった不具合が生じることがある。

 本Tech TIPSでは、「パスが長すぎる」という意味や発生する理由を簡単に説明しつつ、こうしたエラーへの対処方法について幾つか紹介する。手軽な順番に記すので、上から1つずつ順番に試してほしい。

「パスが長すぎます」というエラーが表示される理由

 Windows OSでは、パスやファイル名/フォルダ名の長さに複数の制限が設けられている。まずファイル名/フォルダ名については、最長で244文字または255文字という上限がある(Windows OSの設定などによって異なる)。

 パスの長さの制限は複雑だ。(ドライブ名からではなく)フォルダからの相対的な位置を表す「相対パス」だと最長で259〜260文字とされる。一方、ドライブ名から表される「絶対パス」の場合、Windows OSが備えるファイル/フォルダ操作関連APIの種類によって最長文字数が異なる。259〜260文字が上限というAPIもあれば、約32768文字と非常に長いパスを処理できるAPIもある。

 さらに、ファイルを操作するアプリケーション側で、トラブルを防止するために、独自にパス/ファイル名/フォルダ名の長さを制限していることも考えられる。

 こうした数々の制限が複雑にからみ合った結果、ある状況では非常に長いパスのファイルが存在できるにもかかわらず、別の状況では(短い方の)パスの長さの上限に引っかかり、「パスが長すぎます」といったエラーが生じてしまうことがある。

方法その1――パスに含まれるフォルダ名をもっと短くする

 対象ファイルへのパスがなるべく短くなるように、そのパスに含まれる各フォルダの名前を短いものに変更してみよう。

 例えばZIPファイルを解凍(展開)しているときに「パスが長すぎます」というエラーが生じた場合は、(C:ドライブなどの)ローカルドライブのルートフォルダに1文字のサブフォルダを作成し、そこに展開してみよう。ユーザーの[ドキュメント]フォルダ(デフォルトでは%USERPROFILE%\Documentsフォルダ)以下に展開するのと比べて、絶対パスが大幅に短くなり、エラーを回避できる可能性がある

 作成済みのファイルの場合は、通常のフォルダ操作の場合と同様に、エクスプローラでフォルダをクリックするか、選択してから[F2]キーを押して、パスに含まれるフォルダ名を短いものに変更していく。

パスに含まれるフォルダ名を短くする(1/2) パスに含まれるフォルダ名を短くする(1/2)

パスに含まれるフォルダ名を短くする(2/2) パスに含まれるフォルダ名を短くする(2/2)

 ただ、この方法はフォルダ名がまったく変更できないような状況だと難しい。ファイル名が長いファイルを削除するなどした後に、フォルダ名を元に戻したい場合はかなり面倒だ。その場合は、以下の別の方法を試してほしい。

方法その2――ネットワークドライブ経由でファイルを操作する

 対象ファイルの親フォルダをネットワークドライブとして参照できるようにする、という方法がある。

 ネットワークドライブとは、無線LANなどのネットワーク経由でストレージと接続し、D:〜Z:といったドライブ名を割り当てることで、あたかもローカルドライブのように参照できるという機能だ。

 これを活用すると、ローカルドライブ内にあるファイルでも、ネットワークドライブ経由でアクセスできる。さらに、深い階層にあるフォルダをネットワークドライブのルートフォルダとして設定できるため、パスの長さを大幅に短縮できる。

 ただ、Windows OSのネットワーク機能が無効だと、この方法が利用できないことがある。また、管理者権限も必要だ。

 さて、ネットワークドライブを設定するには、「UNC」と呼ばれるネットワーク上のパスを指定する必要がある。

\\127.0.0.1\<ドライブ名>$\<対象ファイルがあるフォルダのフルパス名>



 上記のUNCのうち、「127.0.0.1」はローカルのPCを指す。「<ドライブ名>$」は「管理共有」と呼ばれ、Windowsが標準で公開する管理目的の共有名である。C:ドライブに対象ファイルが存在する場合は、以下のように「C$」を指定する。

\\127.0.0.1\C$\誰だ\こんなに\長い\ファイル名を\付けたのは?\コピーも\移動も\削除も\ままならないぞ!\どうしよう?



 UNCを確定できたら、次の手順でネットワークドライブを設定する。

  1. エクスプローラの[PC]を右クリックし、表示されたメニューで[ネットワークドライブの割り当て]を選ぶ
  2. ドライブ」は未使用のドライブ名を選択し、「フォルダ」には前述のUNCを記入する。[サインイン時に再接続する]はオフにして、[完了]ボタンをクリックする
対象ファイルのあるフォルダをネットワークドライブに見せかける(1/2) 対象ファイルのあるフォルダをネットワークドライブに見せかける(1/2)
対象ファイルのあるフォルダをネットワークドライブに見せかける(2/2) 対象ファイルのあるフォルダをネットワークドライブに見せかける(2/2)

 エクスプローラで「<選択したドライブ名>:\」を開いてみよう。すると、そのルートフォルダに対象ファイルがあるはずだ。

ネットワークドライブとして接続された、対象ファイルのあるフォルダ ネットワークドライブとして接続された、対象ファイルのあるフォルダ

 対象ファイルの処理が完了したら、もうネットワークドライブは不要なので切断しよう。それには以下の手順を実行する。

  1. エクスプローラの[PC]を右クリックし、表示されたメニューで[ネットワークドライブの切断]を選ぶ
  2. ネットワークドライブの切断」ウィンドウが表示されたら、先ほど割り当てたネットワークドライブをクリックして選び、[OK]ボタンをクリックする
接続したネットワークドライブを切断して元に戻す(1/2) 接続したネットワークドライブを切断して元に戻す(1/2)
接続したネットワークドライブを切断して元に戻す(2/2) 接続したネットワークドライブを切断して元に戻す(2/2)

 あるいは、いったんサインアウトしてサインインし直してもよい(サインアウト時に対象のネットワークドライブは切断される)。

方法その3――mklinkコマンドで「ジャンクション」を作成してパスを短くする

 上記の方法が使えない場合は、mklinkコマンドで「ジャンクション」と呼ばれる「見せかけのフォルダ」を作成し、そこに対象ファイルのあるフォルダを接続(リンク)してみよう。これにより、「<見せかけのフォルダ>\<対象ファイル名>」というパス名で対象ファイルを参照できるようになる(mklinkとジャンクションについてはTech TIPS「Windowsのシンボリックリンクとジャンクションとハードリンクの違い」を、コマンドプロンプトについては連載「マウスのいらないコマンドプロンプトの世界」を参照)。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。