この問題を見たことがあれば、おそらくそれはあなたにとって簡単な修正でした。このエラーが2回以上発生した場合は、修正が複雑な問題になることもあります。
簡単な修正の種類に遭遇することを願っていますが、簡単ではなく、確実に修正できるように準備します。
Windowsでファイル名の長さが問題になるのはなぜですか?(Why Is Filename Length Even An Issue In Windows?)
Windowsのようなオペレーティングシステムで問題となるファイル名の長さの長い歴史があります。8文字と3文字のファイル拡張子を超えるファイル名を使用できない場合がありました。あなたができる最善のことはmyresume.docのようなものでした。これは、ファイルシステムの設計による制限でした。
新しいバージョンのWindowsが登場するにつれて、状況は良くなりました。古い限定されたファイルシステムから、New Technology File System(NTFS)と呼ばれるものに移行しました。NTFSを使用すると、ファイル名の長さが255文字になり、ファイルパスの長さが最大32,767文字になる可能性があります。では、どうすれば長すぎるファイル名を作成できるでしょうか。
Windowsには、システム変数と呼ばれるものがあります。これらは、Windowsが機能するために依存する変数です(Windows)。これは、ビットやバイトをあちこちに移動している場合でも、 Windowsは変数の意味と場所を常に認識しているためです。システム変数MAX_PATHは、ファイル名とファイルパスを260文字未満に制限するものです。
変数なので、変更できると思います。いいえ、すべきではありません。セーターから糸を抜くようなものです。1つのシステム変数が変更されるとすぐに、他のシステム変数とそれらに依存するコンポーネントが解明され始めます。
では、どうすれば修正できますか?
簡単な修正(The Easy Fix)
運が良ければ、エラーが発生し、問題の原因となっているファイルの名前が正確にわかります。または、少なくともファイルの場所。たぶんあなたは次のようなファイル名を持っています:
C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx
この場合、犯罪者が誰であるかは明らかです。Windowsエクスプローラー(Windows Explorer)またはWindows10で呼び出されるファイルエクスプローラー(File Explorer)でファイルを見つけ、1回クリックし、F2キー(F2)を押して名前を変更し、そのばかげたファイル名をより適切なものに変更します。問題は(Problem)解決しました。
簡単ではない修正(The Less Easy Fixes)
この問題を解決するのは必ずしも簡単ではありません。何らかの理由でファイルやディレクトリの名前を変更できない場合があります。
次の解決策はあなたのためにトリックを行います。彼らは難しいことではありません。
(Move)PowerShellを使用してファイルまたはディレクトリを(Or Copy Files Or Directories Using PowerShell)移動、削除(Delete)、またはコピーする
ファイルパスの文字数が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 PathTooLongエラーが発生します。
何らかの理由で、ファイルがネストされているディレクトリの名前を変更できないと仮定しましょう。私たちは何をしますか?
PowerShell(Open PowerShell)を開きます。PowerShellをまだ使用していない場合は、「ホームユーザー向けのPowerShellの使用–初心者向けガイド」の(Using PowerShell for Home Users – A Beginner’s Guide)記事をお楽しみください。ただし、記事を読まなくても次の手順を実行できます。
PowerShellが開くと、ユーザーディレクトリのルートに移動します。C:\Users\guymc がユーザーディレクトリであると仮定して、これに従ってください。(Follow)
Thisという名前のディレクトリは、 Documentsディレクトリ内にあります。Documentsディレクトリに移動するには、 DOSコマンドcdDocumentsを使用します。
C:\Users\guymc\Documentsへのプロンプトの変更が表示されます。それは良い。私たちは物事を簡単にするディレクトリに近づいています。
Copy-Itemを使用してディレクトリをコピーする
ディレクトリThisとその内容をThatNewFolderにコピーします。PowerShellコマンドレットCopy-Itemをパラメーター-Destinationおよび-Recurseとともに使用してみましょう。
-Destinationは、コピーを配置する場所をPowerShellに指示します。-Recurseは、PowerShellに内部のすべてのアイテムをコピー先にコピーするように指示します。コピーすると、オリジナルは元の場所に残り、すべての新しいものが宛先に作成されます。
Copy-Item This -Destination ThatNewFolder -Recurse
Move-Itemを使用してディレクトリを移動する
このディレクトリとその中のすべてのディレクトリとファイルをThatNewFolderに移動するとします。移動しても、元の場所はそのままになりません。
PowerShellコマンドレットMove-Itemをパラメーター-Pathおよび-Destinationとともに使用できます。-Pathは移動するアイテムを定義し、-DestinationはPowerShellに移動先を指示します。
コマンドレットは、これをThatNewFolder内に配置します。また、Thisディレクトリ内にあるすべてのものを移動します。Move-Itemは、ファイルまたはディレクトリの移動に使用でき、ファイルパスやファイル名の長さに関係なく機能します。
Move-Item -Path This -Destination ThatNewFolder
それが機能することを確認するには、cdThatNewFolderコマンドを使用してThatNewFolderに入ります。次に、dirコマンドを使用して、 ThatNewFolder内のディレクトリを一覧表示します。このディレクトリがそこにあることがわかります。
Remove-Itemを使用してディレクトリを削除する
Thisディレクトリとその中のすべてを削除する場合は、 Remove-Itemコマンドレットを使用します。
Remove-Itemコマンドレットには安全機能が組み込まれているため、ディレクトリ内にあるものを含むディレクトリを削除することは困難です。この例では、すべてを削除する必要があることがわかっているので、パラメーター-Recurseを使用して内部のすべてを削除し、-Forceを使用して、内部のすべてのアイテムが確実かどうかを確認せずに削除します。
注意してください!この方法で削除されたものを復元することは非常に困難です。誤って削除されたファイルを回復する方法の方法を試すことができますが、あまり期待しないでください。
Remove-Item This -Recurse -Force
dirコマンドを再度使用して、それがなくなったことを確認できます。
Windows10に長いファイルパスを受け入れさせる(Make Windows 10 Accept Long File Paths)
長いファイルパスと長いファイル名を繰り返し使用することがわかっている場合は、Windowsを機能させる方が簡単です。PowerShellを使用して毎日作業を行う意味はありません。
これを行うには2つの方法があります。1つはWindows10Home(Windows 10) ユーザー用で、もう1つは(Home)Windows10Pro(Windows 10) またはEnterprise(Pro)ユーザー用です。(Enterprise)これらの方法はWindows8.1以前で機能する可能性がありますが、それを保証することはできません。
Windows10Home(Make)で長いファイルパスを受け入れるようにする(Home Accept Long File Paths)
Windows 10 Homeが長いファイルパスを受け入れるようにするには、レジストリエディターを開く必要があります(Registry Editor)。これまでレジストリエディタ(Registry Editor)で作業したことがない場合は、注意が必要です。ここで誤って削除または変更すると、Windowsが完全に機能しなくなる可能性があります。
変更を加える前に、必ずレジストリのバックアップを作成してください。Windowsレジストリのバックアップと復元に関する究極のガイド( Ultimate Guide to Backing Up and Restoring the Windows Registry)で、そのことについて知っておく必要のあるすべてのことを学びましょう。
レジストリエディタ(Editor)を開いてバックアップを作成したら、場所HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemに移動し、キーLongPathsEnabledを見つけます。
LongPathsEnabledをダブルクリックします。[値のデータ:](Value data:)フィールドで、番号1がそこにあることを確認します。[ OK]をクリックして変更をコミットします。
Registry Editorを終了すると、非常に長いファイルパスを処理できるようになります。
Windows10Pro(Make)またはEnterpriseに長いファイルパスを受け入れ(Pro Or Enterprise Accept Long File Paths)させる
Windows 10 ProまたはEnterpriseで長いファイルパスを使用できるようにするには、グループポリシーエディターを使用します(Group Policy Editor)。これは、Windowsがコンピューターおよびユーザーレベルでどのように動作するかに関するポリシーを設定できるツールです。
グループポリシーを使用してInternetExplorerオプションを無効または有効にしたり( disabling or enabling Internet Explorer options)、ログオン画面にメッセージを追加し( adding a message to the logon screen)たりする方法について、いくつかの記事があります。
[スタート(Start)]メニューに移動し、gpeditと入力して、グループポリシーエディター(Group Policy Editor)を開きます。一番上の結果は、グループポリシーの編集(Edit group policy)です。それをダブルクリックします。
グループポリシーエディター(Group Policy Editor)が開いたら、Computer Configuration > Administrative Templates > System > Filesystemに移動します。そこに、Win32ロングパスを有効(Enable Win32 long paths)にするポリシーが表示されます。
それをダブルクリックして、ポリシー設定を編集します。無効(Disabled )から有効(Enabled)に変更し、[ OK ]ボタンを クリックして変更を確定します。
ポリシーはすぐには有効にならない場合があります。ただし、グループポリシーを強制的に更新する( force the group policy to update)ことはできます。
それでおしまい(That’s It)
長いファイル名とファイルパスを回避する方法は他にもいくつかありますが、ここで説明したのは、最も単純で最も効果的な方法です。
How To Fix ‘Filename Is Too Long’ Issue In Windows
If you’ve ever seen this iѕsue, it was probablу a simple fix for you. If you’ve seen this error more than twiсe, then you also know that it can be a complex issue to fix sоmetimes.
Let’s hope you only run into the easy fix variety, but we’ll prepare you for the less easy, guaranteed to work fixes too.
Why Is Filename Length Even An Issue In Windows?
There’s a long history of filename lengths being a problem for operating systems like Windows. There was a time when you couldn’t have filenames longer than 8 characters plus a 3-character file extension. The best you could do was something like myresume.doc. This was a restriction in place by the design of the file system.
Things got better as new versions of Windows came out. We went from an old, limited, file system to something called the New Technology File System (NTFS). NTFS took us to a point where a filename could be 255 characters long, and the file path length could potentially go up to 32,767 characters. So how can we possibly have filenames that are too long?
Windows has things known as system variables. These are variables that Windows relies upon to function, because Windows will always know what the variables mean and where they are, even when we’re moving bits and bytes all over the place. The system variable MAX_PATH is the one that restricts filenames and file paths to under 260 characters.
Being a variable, you’d think we could change it. No, we should not. It would be like pulling a thread out of a sweater. As soon as one system variable changes, other system variables and components dependent on them start to unravel.
How do we fix it, then?
The Easy Fix
If you’re fortunate, you’ll get the error and know exactly what file’s name is causing the issue. Or at least where to find the file. Maybe you have a filename that looks something like:
C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx
It’s obvious who the offender is in this case. Find the file in Windows Explorer, or File Explorer as it’s called in Windows 10, click once on it, hit F2 to rename it, and change that silly filename to something more reasonable. Problem solved.
The Less Easy Fixes
It isn’t always that easy to fix this problem. Sometimes you may not be able to change the names of files or directories for whatever reason.
The following solutions will do the trick for you. They aren’t hard to do.
Move, Delete, Or Copy Files Or Directories Using PowerShell
Sometimes you get an error when trying to move, delete, or copy directories where the character count for the file path is more than 260.
Note that the words directory and folder are interchangeable. We’ll use ‘directory’ going forward. The following PowerShell cmdlets can also be used on files.
Perhaps the file path looks something like:
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
That file path is 280 characters long. So we cannot copy the directory out of there to somewhere else with the normal copy-paste method. We get the Destination Path Too Long error.
Let’s assume that for whatever reason, we can’t rename the directories in which the file is nested. What do we do?
Open PowerShell. If you haven’t used PowerShell yet, enjoy our article Using PowerShell for Home Users – A Beginner’s Guide. You can do the next steps without reading the article, though.
When PowerShell opens, you’ll be at the root of your user directory. Follow along assuming C:\Users\guymc is your user directory.
The directory named This is inside the Documents directory. To move into the Documents directory, we use the DOS command cd Documents.
You’ll see the prompt change to C:\Users\guymc\Documents. That’s good. We’re working closer to the directories which will make things easier.
Copy Directory Using Copy-Item
We want to copy the directory This and its contents into ThatNewFolder. Let’s use the PowerShell cmdlet Copy-Item with the parameters -Destination and -Recurse.
-Destination tells PowerShell where we want the copy to be. -Recurse tells PowerShell to copy all the items inside to the destination. Copying leaves the originals where they are and makes all new ones in the destination.
Copy-Item This -Destination ThatNewFolder -Recurse
Move Directory Using Move-Item
Let’s say we want to move the directory This, and all the directories and files in it, to ThatNewFolder. Moving does not leave the original in place.
We can use the PowerShell cmdlet Move-Item with the parameters -Path and -Destination. -Path defines the item we want to move and -Destination tells PowerShell where we want it.
The cmdlet will put This inside of ThatNewFolder. It will also move everything that is inside of the This directory. Move-Item can be used to move files or directories, and it works regardless of file path or filename length.
Move-Item -Path This -Destination ThatNewFolder
To make sure it worked, use the cd ThatNewFolder command to get into ThatNewFolder. Then use the dir command to list the directories in ThatNewFolder. You’ll see the This directory is in there.
Delete Directory Using Remove-Item
If we want to delete the This directory, and everything in it, we use the Remove-Item cmdlet.
The Remove-Item cmdlet has some built-in safety that makes it difficult to delete a directory with things inside of it. In our example, we know we want to delete everything, so we’ll use the parameters -Recurse to make it delete everything inside and -Force to make it do that without asking us if we’re sure for every item inside.
Be warned! Recovering anything deleted this way would be extremely difficult. You can try the methods in How to Recover Accidentally Deleted Files, but don’t expect much.
Remove-Item This -Recurse -Force
You can use the dir command again to make sure it is gone.
Make Windows 10 Accept Long File Paths
If you know you’re going to be using long file paths and long file names repeatedly, it’s easier to make Windows work for you. No sense using PowerShell to do the work every day.
There are two ways we can do this. One is for Windows 10 Home users and the other is for Windows 10 Pro or Enterprise users. These methods may work for Windows 8.1 or earlier, but we cannot guarantee that.
Make Windows 10 Home Accept Long File Paths
To make Windows 10 Home accept long file paths, we need to open the Registry Editor. If you haven’t worked in Registry Editor before, be cautious. Accidentally deleting or changing things in here can stop Windows from working completely.
Always make a backup of your registry before making any changes. Learn everything you need to know about that in our Ultimate Guide to Backing Up and Restoring the Windows Registry.
Once you have Registry Editor opened, and your backup made, navigate to the location HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem and find the key LongPathsEnabled.
Double-click on LongPathsEnabled. In the Value data: field, make sure the number 1 is in there. Click OK to commit the change.
Exit Registry Editor and you should be able to work with crazy long file paths now.
Make Windows 10 Pro Or Enterprise Accept Long File Paths
To allow Windows 10 Pro or Enterprise to use long file paths, we’re going to use the Group Policy Editor. It’s a tool that allows us to set policies on how Windows operates at the computer and the user levels.
We’ve got several articles on using group policy to do things like disabling or enabling Internet Explorer options, or adding a message to the logon screen.
Open the Group Policy Editor by going to the Start menu and typing in gpedit. The top result should be Edit group policy. Double-click on that.
Once the Group Policy Editor opens, navigate to Computer Configuration > Administrative Templates > System > Filesystem. There you’ll see the policy Enable Win32 long paths.
Double-click on it to edit the policy setting. Change it from Disabled to Enabled, then click the OK button to commit the change.
The policy may not take effect right away. You can force the group policy to update, though.
That’s It
There are some other ways to work around long filenames and file paths, but what we’ve gone through here are the simplest, most effective methods.