ソフトウェア
 Computer >> コンピューター >  >> ソフトウェア >> ソフトウェア

Windowsで「ファイル名が長すぎます」エラーを解決する方法【初心者向け完全ガイド】

Windowsでファイルを操作していると、突然「ファイル名が長すぎます」や「コピー先のパスが長すぎます」といったエラーに遭遇することがあります。一度だけなら簡単な対処で済むかもしれませんが、何度も繰り返し発生する場合は、原因を理解して根本的に解決する必要があります。

この記事では、簡単に解決できるケースから、PowerShellを使った対処法、さらにはWindowsの設定を変更して長いファイルパスを許可する方法まで、段階的にわかりやすく解説します。

なぜWindowsではファイル名の長さが問題になるのか?

WindowsをはじめとするOSでは、ファイル名の長さが問題になる歴史が長くあります。かつては、ファイル名は8文字+拡張子3文字(いわゆる「8.3形式」)までという制限があり、せいぜいmyresume.doc程度しか付けられませんでした。これはファイルシステムの設計による制約でした。

その後、Windowsの新バージョンが登場するにつれ状況は改善されました。旧来の制限の多いファイルシステムから、NTFS(New Technology File System)へと移行し、ファイル名は255文字まで、ファイルパスの長さも最大32,767文字まで可能になりました。では、なぜ今でも「ファイル名が長すぎる」という問題が起きるのでしょうか?

実は、Windowsには「システム変数」と呼ばれるものが存在します。これはWindowsが動作するために依存している変数で、Windowsは常にその意味と場所を把握しています。その中のMAX_PATHというシステム変数が、ファイル名とファイルパスを260文字未満に制限しているのです。

変数なのだから変更できそうに思えますが、変更すべきではありません。セーターから糸を一本引っ張り出すようなもので、一つのシステム変数を変えると、それに依存する他のシステム変数やコンポーネントまで崩壊してしまう恐れがあります。

では、どうやって解決すればよいのでしょうか?

簡単な解決方法:ファイル名を変更する

運が良ければ、エラーが表示された時点で、どのファイル名が原因なのか、あるいはどこにそのファイルがあるのかがわかるはずです。例えば、次のようなファイル名だったとします。

C:\User\guymc\Documents\My Resumes\resumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

この場合、原因となるファイルは一目瞭然です。エクスプローラー(Windows 10では「ファイルエクスプローラー」)でそのファイルを見つけ、一度クリックして選択し、F2キーを押して名前を変更します。無駄に長いファイル名を、もっと現実的な名前に変えれば解決です。

簡単ではない場合の解決方法

しかし、常にそう簡単に解決できるとは限りません。何らかの理由で、ファイルやフォルダーの名前を変更できない場合もあるでしょう。

そんなときに役立つのが、以下の方法です。いずれも難しい操作ではありません。

PowerShellでファイルやフォルダーを移動・削除・コピーする

ファイルパスの文字数が260を超えるフォルダーを移動・削除・コピーしようとすると、エラーが発生することがあります。

なお、「ディレクトリ」と「フォルダー」は同じ意味です。ここでは「フォルダー」に統一して説明します。以下のPowerShellコマンドレットは、ファイルに対しても使用できます。

例えば、次のようなファイルパスだったとします。

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

このファイルパスは280文字あります。通常のコピーアンドペーストでは、このフォルダーを別の場所にコピーできず、「コピー先のパスが長すぎます(Destination Path Too Long)」というエラーが表示されます。

ここでは、何らかの理由でファイルが格納されているフォルダーの名前を変更できないと仮定します。どうすればよいでしょうか?

PowerShellを開きます。PowerShellが開くと、ユーザーディレクトリのルートにいます。ここでは、ユーザーディレクトリがC:\Users\guymcであると仮定して進めます。

「This」というフォルダーは「Documents」フォルダーの中にあります。DOSコマンドのcd Documentsを使って、Documentsフォルダーに移動しましょう。

プロンプトがC:\Users\guymc\Documentsに変わったら成功です。対象のフォルダーに近い場所で作業することで、操作がしやすくなります。

Copy-Itemでフォルダーをコピーする

「This」フォルダーとその中身を「ThatNewFolder」にコピーしたい場合は、PowerShellのコマンドレットCopy-Itemを、-Destination-Recurseのパラメーター付きで使用します。

-Destinationはコピー先の場所を指定し、-Recurseはフォルダー内のすべての項目をコピー先にコピーするよう指示します。コピー元はそのまま残り、コピー先に新しいファイルが作成されます。

Copy-Item This -Destination ThatNewFolder -Recurse

Move-Itemでフォルダーを移動する

「This」フォルダーと、その中のすべてのフォルダーやファイルを「ThatNewFolder」に移動したい場合はどうでしょう。移動の場合、元の場所には残りません。

この場合は、PowerShellのコマンドレットMove-Itemを、-Path-Destinationのパラメーター付きで使用します。-Pathは移動したい項目を指定し、-Destinationは移動先を指定します。

このコマンドレットは、「This」を「ThatNewFolder」の中に移動し、「This」フォルダー内のすべての内容も一緒に移動します。Move-Itemはファイルにもフォルダーにも使え、ファイルパスやファイル名の長さに関係なく動作します。

Move-Item -Path This -Destination ThatNewFolder

正しく移動できたか確認するには、cd ThatNewFolderコマンドで「ThatNewFolder」に移動し、dirコマンドで中身を一覧表示します。「This」フォルダーが表示されれば成功です。

Remove-Itemでフォルダーを削除する

「This」フォルダーとその中身をすべて削除したい場合は、Remove-Itemコマンドレットを使用します。

Remove-Itemには、中身のあるフォルダーの削除を防ぐ安全機構が組み込まれています。今回の例ではすべて削除したいので、中身ごと削除するための-Recurseと、各項目について確認を求められないようにするための-Forceというパラメーターを使用します。

注意!この方法で削除したデータを復元するのは非常に困難です。復元ツールなどを試すことはできますが、あまり期待しないほうがよいでしょう。

Remove-Item This -Recurse -Force

削除後、再度dirコマンドを実行して、フォルダーが消えたことを確認できます。

Windows 10で長いファイルパスを許可する設定

長いファイルパスやファイル名を日常的に扱う予定があるなら、Windows側の設定を変更してしまうほうが楽です。毎日PowerShellで作業するのは非効率ですからね。

設定方法は2通りあります。Windows 10 Homeユーザー向けの方法と、Windows 10 Pro/Enterpriseユーザー向けの方法です。Windows 8.1以前でも動作する可能性はありますが、保証はできません。

Windows 10 Homeで長いファイルパスを許可する

Windows 10 Homeで長いファイルパスを許可するには、レジストリエディターを開く必要があります。レジストリエディターを使ったことがない方は、慎重に作業してください。誤って項目を削除・変更すると、Windowsが完全に動作しなくなる恐れがあります。

必ず変更前にレジストリのバックアップを取りましょう。バックアップと復元の手順は、Microsoftの公式ドキュメントなどを参考にすると安心です。

レジストリエディターを開き、バックアップを取ったら、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemへ移動し、LongPathsEnabledというキーを見つけます。

LongPathsEnabledをダブルクリックし、値のデータフィールドに1が入っていることを確認します。OKをクリックして変更を確定します。

レジストリエディターを終了すれば、非常に長いファイルパスでも問題なく扱えるようになっているはずです。

Windows 10 Pro/Enterpriseで長いファイルパスを許可する

Windows 10 ProまたはEnterpriseで長いファイルパスを許可するには、グループポリシーエディターを使用します。これは、コンピューターレベルやユーザーレベルでWindowsの動作に関するポリシーを設定できるツールです。

スタートメニューでgpeditと入力し、検索結果の一番上に表示される「グループポリシーの編集」をダブルクリックして開きます。

グループポリシーエディターが開いたら、コンピューターの構成 > 管理用テンプレート > システム > ファイルシステムへ移動します。そこに「Win32の長いパスを有効にする」というポリシーがあります。

ダブルクリックしてポリシー設定を編集し、「無効」から「有効」に変更して、OKボタンをクリックして変更を確定します。

ポリシーはすぐに反映されない場合があります。その場合は、コマンドプロンプトやPowerShellでgpupdate /forceコマンドを実行すると、グループポリシーを強制的に更新できます。

まとめ

長いファイル名やファイルパスへの対処法は他にもありますが、ここで紹介した方法が最もシンプルで効果的です。まずはファイル名の変更を試し、それが難しい場合はPowerShellやWindowsの設定変更を活用しましょう。

  1. Windows 11でスクロールバーが表示されない問題を解決する方法

    Windows 11でスクロールバーが見つからずお困りですか?Windows 11では、スタートメニューや設定アプリ、Microsoft Storeアプリなど、特定のアプリや機能のスクロールバーは、使用していないときに自動的に非表示になる仕様になっています。マウスをホバーしながらスクロールすれば、スクロールバーが一時的に現れます。スクロールバーを常に表示できれば利便性が向上しますが、この仕様が全ての人にとって快適とは限りません。常時表示の方が使いやすいと感じる方のために、Windows 11にはスクロールバーを常に表示させるための設定が用意されています。Windows 11でスクロールバーが表

  2. Windows 11でエクスプローラーの動作が遅いときの対処法6選

    ファイルエクスプローラーは、Windowsの標準ファイル管理アプリであり、多くのユーザーが毎日使用しています。しかし、サードパーティ製のファイラーを試してみたいと考えている方もいるかもしれません。その理由の一つとして挙げられるのが、エクスプローラーの起動や操作が異常に遅いという問題です。この不具合はWindows 10だけでなく、Windows 11でも報告されています。エクスプローラーが遅くなる原因は?「なぜ自分のエクスプローラーはこんなに遅いのか?」と悩んでいる方も多いでしょう。原因はいくつか考えられます。主なものを以下にまとめました。クイックアクセスに不要なフォルダーやアプリがピン留めさ