【Windows 10/11障害対策】パスやファイル名/フォルダ名が長すぎてエラーになるTech TIPS

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

» 2025年01月15日 05時00分 公開
[島田広道デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

パスやファイル名/フォルダ名が長すぎてエラーになる原因と対策

対象:Windows 10/11


 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:」「E:」〜「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 /J <見せかけのフォルダ> "<対象ファイルがあるフォルダへのパス>"



 mklinkとジャンクションについてはTech TIPS「Windowsのシンボリックリンクとジャンクションとハードリンクの違い」を、コマンドプロンプトについては連載「マウスのいらないコマンドプロンプトの世界」をそれぞれ参照していただきたい。

 <見せかけのフォルダ>には、C:ドライブなどローカルドライブのいずれかのルートフォルダ直下として、1文字のフォルダ名を指定するとよいだろう。このとき、mklinkコマンドでエラーが生じてしまうので、実際に存在するフォルダを指定しないこと(事前にフォルダを作成してはいけない)。

 以下の例では、「C:\Y」という見せかけのフォルダ名を指定している。

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



mklinkコマンドで短い名前のフォルダに見せかける mklinkコマンドで短い名前のフォルダに見せかける

 mklinkコマンドを実行したら、<見せかけのフォルダ>をエクスプローラで開き、対象ファイルにアクセスできることを確認しよう。パスが短くなったことを除けば、通常のファイルと同様に操作できるはずだ。

mklinkコマンドで作成した見せかけのフォルダ「C:\Y」 mklinkコマンドで作成した見せかけのフォルダ「C:\Y」

 対象ファイルの処理が完了したら、以下のコマンドラインを実行して<見せかけのフォルダ>を削除する。くれぐれも対象ファイルの方を誤って指定して削除しないように注意すること。

rmdir <見せかけのフォルダ>



mklinkコマンドで作成した見せかけのフォルダを削除して元に戻す mklinkコマンドで作成した見せかけのフォルダを削除して元に戻す

方法その4――パス長の制限を一時的に解除する

 以上のいずれの方法でも解決できない場合、Windows 10(バージョン1607以降)やWindows Server 2016以降なら、Windows OSの設定を変更することで259〜260文字というパスの長さの上限を解除する、という方法がある。

 解除すると、アプリケーションがWindows OSを介してファイルやフォルダを操作する際、259〜260文字までという従来の制限なしで、そのパスを取り扱えるようになる。つまり、パスの長さが259〜260文字を超えても、そのまま処理できるようになる可能性が高まる。

 ただし、アプリケーションによっては、この解除の設定をしてもパス長が制限されたままの場合もある。

 このパス長制限の解除には、レジストリ操作とグループポリシーという2種類の方法がある。

●レジストリの設定を変更してパス長の制限を解除するには

 レジストリでパス長制限を解除するには、管理者権限が必要だ。

[注意]

レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリエディターは慎重に操作するとともに、あくまでご自分のリスクで設定してください。何らかの障害が発生した場合でも、編集部では責任を負いかねます。ご了承ください。


項目 内容
キー HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
値の名前 LongPathsEnabled
REG_DWORD(DWORD 32bit)型
値の内容 1: 259〜260文字を超える長いパス名を許可
0: パス名を259〜260文字以下に制限
パス長制限を解除するためのレジストリエントリ

レジストリエディターでパス長制限を解除する レジストリエディターでパス長制限を解除する

reg add HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f

regコマンドでパス長制限を解除する
※Microsoftのレファレンス: reg addコマンド

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Type DWord -Value 1 -Force

PowerShellでパス長制限を解除する
※Microsoftのレファレンス: Set-ItemPropertyコマンドレット

 上記の設定をしたら、システムを再起動してから、対象ファイルの操作を試してみよう。

 もし成功したら、作業完了後、上記の設定は元の「0」に戻して無効化しておいた方が無難だろう(変更後、同じくシステムの再起動が必要)。全てのアプリケーションで259〜260文字を超える長いパスを処理できるとは限らないので、引き続き259〜260文字以下という制限の下でファイルを操作した方が安全だからだ。

●グループポリシーでもパス長の制限は解除できるけど注意が必要

 上述のレジストリ設定は、グループポリシーの[コンピューターの構成]−[管理用テンプレート]−[システム]−[ファイル システム]−[Win32 の長いパスを有効にする]でも設定できる。

 ただし、Windows OSがHomeエディションの場合、グループポリシーの設定変更はできない(前述のレジストリ設定を試してほしい)。

グループポリシーでパス長制限を解除する グループポリシーでパス長制限を解除する

 このポリシーを「有効」にすると、前述のレジストリエントリの値は「1」すなわちパス長制限が解除される。逆に「無効」にすると「0」すなわちパス長を制限するようになる。

 ポリシー設定を変更したら、システムを再起動してから、対象ファイルの操作を試してみよう。もし成功したら、前述のレジストリ設定の場合と同じく、この設定を無効に戻して再起動した方がよいだろう。

 注意が必要なのは、このポリシーをいったん「有効」または「無効」にしてから「未構成」に戻しても、その直前の「有効」「無効」のどちらかの設定が残ってしまうことだ。その場合は「未構成」ではなく「無効」に設定したままにするか、「未構成」に戻しつつ前述のレジストリエントリの値を手動で「0」に設定する必要がある。

■関連リンク


■更新履歴

【2025/01/15】Windows 11に対応しました。PowerShellでパス長制限を解除するコマンドラインと、グループポリシーでパス長制限を解除する際の注意点をそれぞれ追記しました。

【2021/06/02】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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