1

スペースを含むパラメーターを渡すバッチ ファイルを作成しようとしています。

::create mono PCX file
"C:\Program Files\gs\gs9.06\bin\gswin64.exe" -q -dNOPAUSE -dSAFER -dBATCH -sPAPERSIZE=%3 -r200 -g1728x2285 -sDEVICE=pcxmono -sOutputFile="%~dpn2._temp_.%%d.pcx" "%1" -c quit

::create zip file
7za a "%2" "%~dpn2._temp_.*.pcx"

私の問題は、%1="test case.zip" の場合、test.zip しか取得できないことです。Windows cmd.exe インタープリターが %2 でスペースを含むパラメーターを正しく渡すようにする方法はありますか?

一番。願い事

4

1 に答える 1

3

引用符はステートマシンです。最初の引用符は引用符をオンにし、2番目はオフにし、3番目はオンにします。

あなたの問題は周りの引用符"%1"です。

"test case.zip"コマンドラインで渡すので、 %1= "test case.zip"、および追加された引用符は結果になり""test case.zip""ます。パラメーターが正しく引用されなくなったため、パーサーは2つのパラメーターを認識します。

  1. ""test
  2. case.zip""

あなたがする必要があるのはあなたのコードの引用符を削除することです:"%1"->%1

もう1つのオプションは、~修飾子を使用して、独自の引用符を追加する前に、既存の囲んでいる引用符を削除することです"%~1"~パラメータが引用符で囲まれていない場合、修飾子は効果がありません。

于 2012-11-12T13:58:17.177 に答える