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

报价是一个状态机——第一个报价打开引用,第二个关闭,第三个打开,等等。

你的问题是周围的引号"%1"

您在"test case.zip"命令行上输入,所以%1= "test case.zip",添加的引号导致""test case.zip"". 您的参数不再正确引用,因此解析器看到 2 个参数:

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

您需要做的就是删除代码中的引号:"%1"-->%1

另一种选择是~在添加自己的: 之前使用修饰符删除任何现有的封闭引号"%~1"。如果参数未用引号括起来,~则修饰符无效。

于 2012-11-12T13:58:17.177 回答