我正在尝试创建一个使用空格传递参数的批处理文件。
::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
答案 0 :(得分:3)
报价是状态机 - 第一个引用引用,第二个引用,第三个引用等等。
您的问题是"%1"
周围的引号。
您在命令行上传递"test case.zip"
,因此%1
= "test case.zip"
,添加的引号会生成""test case.zip""
。您的参数不再正确引用,因此解析器会看到2个参数:
""test
case.zip""
您需要做的就是删除代码中的引号:"%1"
- > %1
另一种选择是在添加自己的引号之前使用~
修饰符删除任何现有的封闭引号:"%~1"
。如果参数未包含在引号中,则~
修饰符无效。