Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

Windows環境でファイルを操作するときなどに、パスやファイル名が長すぎると、ファイル名を変更できなかったり、ごみ箱に移動できないといったエラーが発生することがあります。

これは、Windowsやアプリケーションで扱えるパス(フォルダー名+ファイル名)の長さに制限があるためで、Windowsでは一般的には255文字~260文字が上限となっています。

このようなときは、パスの長さが上限に収まるようフォルダーやファイルの名前を変更するのが簡単ですが、フォルダーやファイルの名前を変更できない場合もあるでしょう。

そこでここでは、パスやファイル名が長すぎてエラーが発生したときに、フォルダーやファイルの名前を変更せずにエラーを回避する方法や、パスの長さ制限を解除する方法を紹介します。

パスを短くする

フォルダー名を変更せずにパスを短くする方法としては「ジャンクション」を使った方法と「ネットワークドライブ」を使った方法があります。

ジャンクションを使った方法

ジャンクションはフォルダーへのリンクの一種で、mklinkコマンドで作成することができます。

mklinkコマンドは、Windows環境に標準搭載されているコマンドで、シンボリックリンク・ハードリンク・ジャンクションといったフォルダーへのリンク(接続)を作成することができ、ジャンクションは一般ユーザーでも作成できます。

ジャンクションを作成するときは、コマンドプロンプトを起動して次の書式でコマンドを実行します。

> mklink /J <ジャンクションフォルダー> <対象ファイルのフォルダーパス>

たとえば「E:\acbdefg\hijklmn\opqrstu\vwxyz\abcdefg\hijklmn」という長いパスを「E:\A」という短いパスでアクセスできるようにするには、次のようにコマンドを実行します。

なお、ジャンクションフォルダーには存在するフォルダーを指定することはできません。

> mklink /J E:\A E:\acbdefg\hijklmn\opqrstu\vwxyz\abcdefg\hijklmn

コマンド実行後「XXXのジャンクションが作成されました」と表示されていれば、作成完了です。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

あとは、エクスプローラーなどからジャンクションフォルダー(E:\A)を開くことで、通常のファイル操作ができます。

なお、作成したジャンクションフォルダーは通常のファイル操作で削除できます。

ネットワークドライブを使った方法

ネットワークドライブは、通常はリモートの共有フォルダーに接続するために利用しますが、次のようにパスを指定することで、ローカルドライブ内のフォルダーをネットワークドライブとして参照することができます。

なお、この方法には管理者権限が必要になります。

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

たとえば「E:\acbdefg\hijklmn\opqrstu\vwxyz\abcdefg\hijklmn」というフォルダーをネットワークドライブ(Tドライブ)として設定する場合は、コマンドプロンプトを起動して以下のようにコマンドを実行します。

> net use T: \\127.0.0.1\E$\acbdefg\hijklmn\opqrstu\vwxyz\abcdefg\hijklmn

コマンド実行後「コマンドは正常に終了しました」と表示されれば、ネットワークドライブの作成完了です。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

あとは、エクスプローラーなどからネットワークドライブを開くことで、通常のファイル操作ができます。

なお、作成したネットワークドライブは、エクスプローラーやコマンドから簡単に切断できます。

ファイル名を短くする

Windows 10は、古いWindowsとの互換性のために、通常のフォルダー名やファイル名に加えて「8.3形式」と呼ばれる短い名前を生成して保持しており、ファイル名が長すぎてエラーが発生するようなときには、8.3形式の短い名前を利用することでエラーを回避できます。

Windows 10では、システムドライブ(Cドライブ)は、デフォルトで8.3形式の名前生成が有効になっており、それ以外のドライブは無効になっています。

8.3形式の名前が有効か確認する

まず、対象となるドライブで8.3形式の名前生成が有効か確認します。

たとえば、Cドライブで8.3形式の名前生成が有効か確認するときは、管理者権限でコマンドプロンプトを起動して、以下のコマンドを実行します。

> fsutil 8dot3name query c:

「8dot3 名の作成は有効です」と表示されていれば、8.3形式の名前が生成されており、すぐに利用できます。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

「8dot3 名の作成は無効です」と表示されている場合は、あらかじめ以下のコマンドを実行して、Windowsを再起動し、対象のドライブで8.3形式の名前生成を有効化できます。

以下のコマンドでは、Dドライブで8.3形式の名前生成を有効化しています。

> fsutil 8dot3name set d: 0

8.3形式のファイル名を確認する

8.3形式のファイル名を確認するには、長い名前のファイルが保存されているパスを対象に以下のコマンドを実行します。

> dir <対象のパス> /X

すると、指定したパスに保存されているフォルダーやファイルが一覧表示され、4列目に8.3形式の名前が表示されます。

以下の画面では「abcdefghijklmnopqrstuvwxyz.txt」というファイルの8.3形式の名前が「ABCDEF~1.TXT」であることが確認できます。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

8.3形式の名前は、Windows上でファイル名として扱えるので、ファイル名が長すぎて操作できない場合でも、8.3形式の名前を使えば操作できるでしょう。

パスの長さ制限を解除する

Windows 10では、Win32アプリケーションやストアアプリで扱えるパスの長さ制限を、レジストリ設定やグループポリシー設定で解除することができます。

なお、パスの長さ制限を解除すると、アプリケーションによっては、予期せぬ動作を引き起こす可能性があるので、制限の解除は一時的に行うのがよいでしょう。

レジストリ設定で解除

レジストリ設定でパスの長さ制限を解除するには、管理者権限でコマンドプロンプトを起動して以下のコマンドを実行します。

> reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /t REG_DWORD /v LongPathsEnabled /d 1 /f

コマンドを実行後「この操作を正しく実行しました」と表示されていることを確認して、Windows 10を再起動すれば設定が反映されます。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

なお、設定を戻すには、管理者権限でコマンドプロンプトを起動して以下のコマンドを実行します。

> reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /t REG_DWORD /v LongPathsEnabled /d 0 /f

グループポリシーで解除

グループポリシー設定でパスの長さ制限を解除するには、グループポリシーエディタで「コンピューターの構成」>「管理用テンプレート」>「システム」>「ファイル システム」を開き「Win32の長いパスを有効にする」の設定を有効化します。

Windowsでパスやファイル名が長すぎてエラーが発生するときの回避方法

設定したグループポリシーを適用するには、Windows 10を再起動します。

あとがき

システムやアプリが自動生成するフォルダーやファイルを手動で削除したりするとき、まれにフォルダー階層が深くパスが長しぎたり、ファイル名が長すぎて名前を変更したり削除できないことがあります。そのようなときにお役立てください。