Batch file 批处理脚本中的空格

Batch file 批处理脚本中的空格,batch-file,whitespace,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 "%

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

::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”
周围的引号

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

  • 测试
  • case.zip”“
  • 您只需删除代码中的引号:
    %1
    -->
    %1

    另一个选项是使用
    ~
    修饰符删除任何现有的封闭引号,然后再添加自己的:
    “%~1”
    。如果参数未括在引号中,
    ~
    修饰符无效