2012-11-12 104 views
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中正確地傳遞參數的空格?

最好。 wishi

回答

3

行情是一個狀態機 - 第一次報價輪番報價上,第二關,3號等

你的問題是圍繞"%1"引號。

您在命令行中傳入"test case.zip",因此%1 = "test case.zip",並且所添加的引號導致""test case.zip""。您的參數不再正確引用,所以解析器看到兩個參數:

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

所有你需要做的就是刪除代碼報價:"%1" - >%1

另一種選擇是使用~修飾符刪除任何現有的封閉引號,然後再添加自己的引號:"%~1"。如果該參數不包含在引號中,則~修飾符不起作用。