我已閱讀了不同方法獲取windows批處理文件解析器以正確處理具有空格,括號和其他特殊字符的變量的許多線程,但似乎沒有任何建議可以解決我遇到的問題。帶空格和括號的批處理文件變量
這裏是腳本(之前嘗試的任何變通辦法),其目標是建立發現variable01和variable02基於價值variable03值:
set variable01="C:\Program Files (x86)\SomeProgram\Subfolder"
set variable02="${macro}"
set variable01=%variable01:"=%
set variable02=%variable02:"=%
set variable03=""
if %variable02:~0,1%==$ (
if %variable01:~0,1%==$ (
set variable03=%variable03:"=%
) else (
set variable03=-o '%variable01%'
)
)
... variable01的價值觀和variable02並不是事先知道的 - 在運行腳本之前它們會被另一個程序替代,所以上面的腳本顯示了在替換完成後變量01和變量02的一組示例值。
我得到當此腳本運行錯誤是:
\SomeProgram\Subfolder' was unexpected at this time.
...這對應於上述腳本中的最後「設置」行。我認爲這個錯誤是由於variable01的括號中的。
如果我把上面一行是:
set "variable03=-o '%variable01%'"
...然後我得到這個錯誤:
Files was unexpected at this time.
...這似乎表明,它試圖來標記的變量01中的空格,解析器仍然不滿意。
如果我再在腳本的頂部添加這一行:
setlocal enableextensions enableDelayedExpansion
...並更改%variable01%至variable01!我仍然得到同樣的錯誤。
很顯然,我不明白是什麼批處理文件分析器需要滿足我的要求,即variable03的值具有以下值:
-o 'C:\Program Files (x86)\SomeProgram\Subfolder'
...有什麼建議?
感謝您的答覆 - 這仍然會產生同樣的錯誤,這可能是因爲variable01還是會被在else子句的背景下展開。我想另一個選擇是修改子程序,使其不需要參數,併爲變量01和變量02的每個組合創建一個不同的子程序... – Hoobajoob 2013-02-25 21:18:35
Are you sure?我在你的問題中得到錯誤代碼,但我沒有用我的代碼得到它。我只是將上述內容複製粘貼到我的記事本中,並試圖確保我沒有錯別字。 – 2013-02-25 21:21:17
請注意'call:set3'行中的*雙引號*。如果你使用單引號,你會得到錯誤。 – 2013-02-25 21:23:44