Windows での ‘ファイル名が長すぎます’ 問題の修正方法

この問題を見たことがある場合、それはおそらくあなたにとって簡単な修正方法だったでしょう。 このエラーを 2 回以上見たことがある場合は、時に修正するのが複雑な問題であることも知っているはずです。

簡単な修正の種類にしか遭遇しないことを祈りますが、簡単ではない、確実に動作する修正方法も準備しておきます。

Why Is Filename Length Even An Issue In Windows?

ファイル名の長さが、Windows などの OS で問題になったのは長い歴史があるからです。 かつて、8 文字と 3 文字のファイル拡張子より長いファイル名を付けることができなかった時代がありました。 せいぜい「myresume.doc」のようなものだ。 これは、ファイル システムの設計による制限でした。

Windows の新しいバージョンが出るにつれて、状況は良くなっていきました。 古い、制限のあるファイル システムから、New Technology File System (NTFS) と呼ばれるものに移行しました。 NTFS では、ファイル名が 255 文字になり、ファイル パスの長さが 32,767 文字になる可能性があるところまで到達しました。 では、どうすれば長すぎるファイル名を持つことができるのでしょうか。

Windows にはシステム変数と呼ばれるものがあります。 これは、Windows が機能するために依存している変数で、ビットとバイトをあちこちで動かしていても、Windows は常に変数が何を意味し、どこにあるのかを知っているからです。 システム変数 MAX_PATH は、ファイル名とファイル パスを 260 文字未満に制限するものです。

変数であるため、変更できると思うかもしれません。 いいえ、変更すべきではありません。 それは、セーターから糸を引き抜くようなものです。

では、どのように修正すればよいのでしょうか。

The Easy Fix

幸運にも、エラーが発生し、問題の原因となるファイル名を正確に知ることができます。 あるいは、少なくともそのファイルを見つけることができます。 たとえば、次のようなファイル名があるかもしれません:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

この場合、違反者が誰であるかは明らかです。 Windowsエクスプローラ(Windows 10ではファイルエクスプローラと呼ばれる)でファイルを見つけ、その上で一度クリックし、F2キーを押して名前を変更し、その愚かなファイル名をもっと妥当なものに変更します。

The Less Easy Fixes

この問題を解決するのはいつも簡単というわけではありません。 何らかの理由でファイルやディレクトリの名前を変更できないことがあります。

以下の解決策でうまくいくでしょう。

Move, Delete, Or Copy Files Or Directories Using PowerShell

File Path の文字数が 260 以上あるディレクトリを移動、削除、またはコピーしようとすると、エラーが発生することがあります。

ディレクトリとフォルダーという言葉は互換性があることに注意してください。 今後は「ディレクトリ」を使用することにします。

おそらくファイルパスは次のようなものでしょう:

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を使ったことがない方は、「ホームユーザーのためのPowerShellの使い方 – 初心者向けガイド」の記事をお楽しみください。 記事を読まなくても、次のステップを実行することができます。

PowerShellを開くと、ユーザーディレクトリのルートにいます。 C:\Usersguymc がユーザーディレクトリであると仮定して説明します。

ThisというディレクトリはDocumentsディレクトリの中に入っています。 Documentsディレクトリに移動するには、DOSコマンドのcd Documentsを使用します。

プロンプトが C:\UsersguymcDocuments に変わるのが確認できると思います。 それは良いことです。 2008>

Copy Directory Using Copy-Item

ディレクトリ This とその内容を ThatNewFolder にコピーしたいと思います。 PowerShellコマンドレットCopy-Itemに-Destinationと-Recurseをパラメータとして使用してみましょう。

-Destinationは、PowerShellにコピーする場所を指定します。 -Recurse]は、PowerShell に内部のすべてのアイテムを宛先にコピーするように指示します。 2008>

Copy-Item This -Destination ThatNewFolder -Recurse

Move Directory Using Move-Item

The ディレクトリ、およびその中のすべてのディレクトリとファイルを ThatNewFolder に移動するとします。 移動しても、元の場所は残りません。

PowerShell コマンドレット Move-Item にパラメータ -Path と -Destination を指定して使用することができます。 -Pathは移動したいアイテムを定義し、-Destinationは移動したい場所をPowerShellに伝えます。

このコマンドレットは、ThisをThatNewFolderの中に配置します。 また、Thisディレクトリの中にあるすべてのものを移動します。 Move-Item は、ファイルまたはディレクトリの移動に使用でき、ファイル パスやファイル名の長さに関係なく動作します。

Move-Item -Path This -Destination ThatNewFolder

これが動作したか確認するには、cd ThatNewFolder コマンドを使って ThatNewFolder 内に入ってみてください。 次に、dir コマンドを使用して、ThatNewFolder 内のディレクトリを一覧表示します。 9096>

Delete Directory Using Remove-Item

このディレクトリとその中のすべてを削除したい場合、Remove-Itemコマンドレットを使用します。

Remove-Itemコマンドレットは、ディレクトリ内にあるものを削除することを困難にするいくつかの安全性が組み込まれています。 この例では、すべてを削除したいことがわかっているので、パラメータ -Recurse を使用して内部のすべてを削除するようにし、-Force を使用して内部のすべてのアイテムについて確認するかどうかを尋ねずにそれを実行するようにします。 この方法で削除されたものを復元するのは非常に困難です。 9096>

Remove-Item This -Recurse -Force

dir コマンドでもう一度削除したことを確認することができる。

Make Windows 10 Accept Long File Paths

長いファイルパスや長いファイル名を繰り返し使うことが分かっているなら、Windowsに働いてもらう方が簡単です。 PowerShellを使って毎日作業をする意味はありません。

これには2つの方法があるんだ。 1つはWindows 10 Homeユーザー向けで、もう1つはWindows 10 ProまたはEnterpriseユーザー向けです。 Windows 8.1 以前のユーザーでもこれらの方法が使えるかもしれませんが、保証はできません。

Make Windows 10 Home Accept Long File Paths

Windows 10 Home に長いファイルパスを許可するには、レジストリーエディターを開く必要があります。 レジストリ エディターで作業したことがない場合は、注意が必要です。 誤ってここで削除したり変更したりすると、Windows が完全に動作しなくなる可能性があります。

変更を加える前に、必ずレジストリのバックアップを作成してください。 Windows レジストリのバックアップと復元の究極のガイドで、それについて知る必要があるすべてのことを学ぶことができます。

レジストリエディタを開き、バックアップを作成したら、HKEY_LOCAL_MACHINE CzechCurrentControlSetControlFileSystem に移動して、キー LongPathsEnabled を探します。 値のデータ:]フィールドに、数字の「1」が入っていることを確認します。

Registry Editor を終了すると、非常に長いファイルパスで作業できるようになります。

Make Windows 10 Pro Or Enterprise Accept Long File Paths

長いファイルパスを Windows 10 Pro や Enterprise が使用できるようにするには、Group Policy Editor を使用するつもりです。 これは、Windowsがどのように動作するかのポリシーをコンピューターとユーザーのレベルで設定できるツールです。

Internet Explorer のオプションを無効にしたり有効にしたり、ログオン画面にメッセージを追加するなど、グループ ポリシーを使用する方法については、いくつかの記事で紹介しています。 一番上にグループポリシーの編集が表示されるはずです。

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

それをダブルクリックして、ポリシー設定を編集することができます。 無効]から[有効]に変更し、[OK]ボタンをクリックして変更をコミットします。

ポリシーはすぐには反映されない場合があります。 しかし、グループ ポリシーを強制的に更新することはできます。

That’s It

長いファイル名とファイル パスを回避する方法は他にもありますが、ここで紹介したのは最もシンプルで効果的な方法です。

コメントを残す

メールアドレスが公開されることはありません。