2017年11月
      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) | トップページ | .NETなどのコマンドラインの引数で引用符をエスケープする。(その2) »

2010年1月 5日 (火)

.NETなどのコマンドラインの引数で引用符をエスケープする。

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

そこで、.NETとcmd.exeの両方でエスケープする方法ですが、これは、PowerShell.exeのように簡単には行きません。

しかし、PowerShell.exeを使えば、なんとか可能です。

PowerShell ".\ファイル '引数...';"

ここで、'引数...'内の、

"の左に隣接する\を2倍個の\でエスケープします。

"を\""(\と2個の")または"""(3個の")でエスケープします。ただし、奇数のときは、cmd.exeのエスケープのため、+1して偶数にします。

\"によるエスケープはC以来の伝統。"""によるエスケープはundocumented。

このエスケープ法は共に、.NETというより、Win32APIのCommandLineToArgvW()の仕様です。つまり、MSの標準シンタクスです。

« PowerShell.exe -command "スクリプト" で引用符をエスケープする。(その2) | トップページ | .NETなどのコマンドラインの引数で引用符をエスケープする。(その2) »