« バッチファイルで、「管理者として実行」されているか?を判定する。 | トップページ | PowerShell.exe -command "スクリプト" で引用符をエスケープする。(その2) »

2010年1月 2日 (土)

PowerShell.exe -command "スクリプト" で引用符をエスケープする。

PowerShell "スクリプト"で、PowerShellのone linerがバッチファイル内に書けます。

ただ、PowerShellスクリプトをそのまま"スクリプト"内に書くと、引用符が悪さします。

エスケープしようにも、簡単には行きません。

PowerShell.exeのエスケープ法は、\"(\と1個の")または"""(3個の")ですが、cmd.exeのエスケープ法は""(偶数個の")なので、合いません。

例えば、"a;b"という文字列は、

PowerShell "write-host \"a;b\";"

PowerShell "write-host """a;b""";"

で、うまく行きますが、"a<b"という文字列は、

PowerShell "write-host \"a<b\";"

PowerShell "write-host """a<b""";"

で、失敗します。

<>|&などのcmd.exeの制御文字は、奇数個目の"~偶数個目の"でエスケープされ、偶数個目の"~奇数個目の"でエスケープされません。

« バッチファイルで、「管理者として実行」されているか?を判定する。 | トップページ | PowerShell.exe -command "スクリプト" で引用符をエスケープする。(その2) »