\r\n\r\n

Windowsのコマンドラインでファイルパスのスペースをエスケープする方法

Windowsのコマンドプロンプトやpowershellなどのコマンドライン環境では、コマンドとパラメーターの区切りにスペースを使用しますが、ファイル名やフォルダー名にもスペースが含まれる場合があります。スペースが含まれるファイルパスを指定するには、「エスケープ」する必要があります...。

コマンドライン環境(WindowsコマンドプロンプトやPowerShellなど)では、コマンドとパラメーターの区切りにスペースを使用しますが、ファイル名やフォルダー名にもスペースが含まれることがあります。スペースが含まれるファイルパスを指定する場合は、「エスケープ」する必要があります。

コマンドライン101:なぜ宇宙を脱出するのか

エスケープ」された文字は、その意味を変えてしまう。例えば、スペースをエスケープすると、シェルはそれをコマンドライン引数を区切る特殊文字ではなく、標準のスペース文字として扱います。

例えば、中身を見たいテキストファイルがあるとします。その際、typeコマンドを使用することができます。テキストファイルがC: \Test╱file.txtにあると仮定して、コマンドプロンプトから以下のコマンドを実行すると、その内容を表示することができます。

type C:\Test\File.txt

素晴らしい。さて、同じファイルがC: \Test FolderTestにある場合、file.txtはどうなるでしょうか? 以下のコマンドを実行しようとすると、ファイルパスのスペースが邪魔をしてうまくいきません。

type C:\Test Folder\Test File.txt

コマンドラインは、あなたがC: \Test というファイルを探そうとしていると思い、"指定されたパスが見つかりません" と言います。

窓際空間から脱出する3つの方法

Windowsでは、ファイルパスをエスケープする方法が3種類あります。

  • パス(またはその一部)を2重の逆カンマ(")で囲みます。
  • 各スペースの前に**記号(^)をつけることで(これはコマンドプロンプト/CMDにのみ適用され、すべてのコマンドに適用されるわけではないようです)。
  • 各スペースの前にアクセント文字(`)を追加します(これはPowerShellでのみ有効ですが、常に動作します)。

それぞれの方法の使い方を紹介します。

パスを逆カンマ(")で囲んでください。

Windowsがファイルパスを正しく処理するための標準的な方法は、ファイルパスを2つの逆カンマ(")文字で囲むことです。例えば、上記のコマンド例で言えば、以下のコマンドを実行するだけです。

type "C:\Test Folder\Test File.txt"

実際には、必要に応じてパスの一部を逆カンマで囲むことができます。例えば、そのフォルダの中にfile.txtというファイルがあったとします。次のようなコマンドを実行すればよい。

type C:\"Test Folder"\File.txt

しかし、ほとんどの場合、これは必要なく、パス全体に反転したカンマを使用することができます。

このソリューションは、従来のコマンドプロンプト(CMD)環境とWindows PowerShellの両方で動作します。

ときどき:スペース(^)を**記号文字でエスケープする

コマンドプロンプトでは、**記号(^)で理論上、スペースをエスケープすることができます。ファイル名の各スペースの前に追加するだけです。(この文字は、キーボードの数列で見つけることができます。記号文字を入力する場合は、Shift+6を押してください)。

コマンドプロンプトはこの文字を奇妙に扱います。

例えば、今回紹介したコマンドを例にとると、以下のようなコマンドを実行することになりますが、これはうまくいきません。

type C:\Test^ Folder\Test^ File.txt

一方、コマンドプロンプトにファイルへのパスを入力して直接ファイルを開こうとすると、**文字がスペースとして正しくエスケープされていることがわかります:。

C:\Test^ Folder\Test^ File.txt

では、どのような場合に有効なのでしょうか。さて、私たちの調査によると、あるアプリケーションには有効で、他のアプリケーションには有効でないようです。使用するコマンドによっては、走行距離が異なる場合があります。コマンドプロンプトは、この文字の扱いが変です。興味のある方は、どんなコマンドでも試してみてください、うまくいくかもしれないし、いかないかもしれません。

一貫性を保つため、コマンドプロンプトでは二重引用符を使用するか、PowerShellに切り替えて以下のアクセント付き文字の方法を使用することをお勧めします。

powershell:アクセント記号(`)を使用する

PowerShellでは、アクセント記号(`)をエスケープ文字として使用します。ファイル名の各スペースの前に追加するだけです。(キーボードのTabキーとEscキーの上にある文字です)。

type C:\Test` Folder\Test` File.txt

アクセント付きの各文字は、PowerShellに次の文字をエスケープするように指示します。

PowerShell環境でのみ有効であることに注意してください。コマンドプロンプトでは、**文字を使用する必要があります。


LinuxやmacOSなどのUNIX系OSに慣れている方は、スペースの前にバックスラッシュ( \ )を付けてエスケープすることに慣れていると思います。 Windowsでは、通常のファイルパスに対して使うので、うまくいきません。お使いのコマンドラインシェルによっては、**記号( ^ )やアクセント( ` )文字がWindows版のバックスラッシュと呼ばれるものです。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ