空白の入ったパス/コマンドを使用する

PowerShell スクリプト (.ps1 ファイル)

コール演算子 (&) を使う。

& "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

あるいは、スペースをバッククォート `でエスケープする。

C:\Program Files` (x86)\Google\Chrome\Application\chrome.exe

スクリプト引数

シングルクォーテーションで囲う。

>powershell .\hello.ps1 'Hello, World!'

スペースをバッククォートでエスケープする。(コンマも合わせてエスケープしないと配列として解釈される。)

>powershell .\hello.ps1 "Hello`,` World!"

ダブルクォーテーション内でシングルクォーテーションで囲う。

>powershell .\hello.ps1 "'Hello, World!'"

-File オプションを使用する。

>powershell -File .\hello.ps1 "Hello, World!"

ダブルクォーテーション内でエスケープしたダブルクォーテーションで囲う。(コマンドプロンプト)

>powershell .\hello.ps1 "\"Hello, World!\""

ダブルクォーテーション内でエスケープしたダブルクォーテーションで囲う。(PowerShell コンソール)

> powershell --% .\hello.ps1 "\"Hello, World!\""

コマンドプロンプト(cmd.exe)

ダブルクォーテーションをエスケープするには、ダブルクォーテーションを二回重ねる。

>powershell.exe -Command "Write-Output ""Hello, World!"""

PowerShell コマンド (powershell.exe)

-Command オプションに渡すコマンドライン文字列でスペースを使用するには、ダブルクォーテーション内でダブルクォーテーションをエスケープする。バッククォートの前にバックスラッシュを付ける。

> powershell.exe -Command "Write-Output \`"Hello, World!\`""

もしくは、解析停止信号 --% を使うと、それ以降は引数の解釈がコマンドプロンプトと同じになる。

> powershell.exe --% -Command "Write-Output ""Hello, World!"""

参考:

powershell.exe -Command パラメーターの謎挙動について | しばたテックブログ

PowerShell の引数展開に関する仕様まとめ – Qiita

コマンドプロンプトから PowerShell 起動時に、空白スペースが紛れた値を、分割されず引数として渡したい | 有馬総一郎のブログ

パス名にスペースのある実行ファイルの指定方法 | Technet フォーラム

空白を含むパラメータをバッチファイルに指定するには? | Technet フォーラム

Spaces cause split in path with PowerShell – Stack Overflow

Call operator & | Microsoft Docs [Official]

解析の停止: --% | Microsoft Docs [公式]

Powershell is removing comma from program argument – Stack Overflow

Can I make this PowerShell Script accept commas? – Super User

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です