.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) »