批处理脚本中的空格

时间:2012-11-12 12:37:20

标签: batch-file whitespace

我正在尝试创建一个使用空格传递参数的批处理文件。

::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中正确传递带空格的参数?

最佳。 wishi

1 个答案:

答案 0 :(得分:3)

报价是状态机 - 第一个引用引用,第二个引用,第三个引用等等。

您的问题是"%1"周围的引号。

您在命令行上传递"test case.zip",因此%1 = "test case.zip",添加的引号会生成""test case.zip""。您的参数不再正确引用,因此解析器会看到2个参数:

  1. ""test
  2. case.zip""
  3. 您需要做的就是删除代码中的引号:"%1" - > %1

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