2018年6月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« バッチファイルで、「管理者として実行」されているか?を判定する。 | トップページ | 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) »