PowerShell.exe -command "スクリプト" で引用符をエスケープする。(その2)
そこで、PowerShell.exeとcmd.exeの両方でエスケープする方法です。
"スクリプト"内では、
"の左に隣接する\を2倍個の\でエスケープします。
"を\""(\と2個の")でエスケープします。
あるいは、
"を"""(3個の")でエスケープします。ただし、奇数のときは、cmd.exeのエスケープのため、+1して偶数にします。
PowerShell.exeは、"スクリプト"を評価するときに、3n個の"をn個の"に変換して、端数個の"を切り捨てるようです。
ただし、最初の端数2個の"は、例外的に1個の"に切り上げて変換するようです。
単純さで、\""がお勧めです。
例えば、write-host "a""b";というスクリプトは、
PowerShell "write-host \""a\""\""b\"";"
PowerShell "write-host """"a""""""b"""";"
のように書けます。
« PowerShell.exe -command "スクリプト" で引用符をエスケープする。 | トップページ | .NETなどのコマンドラインの引数で引用符をエスケープする。 »