[英]How to create batch file in Windows using “start” with a path and command with spaces
[英]How to set PATH to another variable value with spaces in Windows batch file
我有一個Windows批處理腳本問題,我正在抨擊我的頭(沒有雙關語意)。 有問題的腳本如下所示:
if defined _OLD_VIRTUAL_PATH (
set PATH=%_OLD_VIRTUAL_PATH%
)
當我運行它並設置_OLD_VIRTUAL_PATH
,我得到:
\Microsoft was unexpected at this time.
_OLD_VIRTUAL_PATH
是一個最初從PATH
設置的變量,它包含空格 - 我很確定這是問題所在。 但是解決方案是什么? 如果我將它括在引號中,它會成功運行,但我不認為PATH
變量的整個值應該在引號中。
這里你的問題不是空格,而是一個右括號。 您可能正在運行64位系統,其中32位應用程序的Program Files目錄是Program Files (x86)
。 在批處理文件中的括號內的塊中,右括號結束該塊,因此該行的其余部分會導致語法錯誤。
您有兩種方法可以解決此問題:
1)將完整的set
參數放在引號中。 這導致關閉的paren不被識別為塊結束:
if defined _OLD_VIRTUAL_PATH (
set "PATH=%_OLD_VIRTUAL_PATH%"
)
2)不要使用塊:
if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
好吧 - 直到現在我才知道cmd腳本中已defined
操作...
你的腳本似乎對我很好 - 哪條線正好產生錯誤?
你也可以嘗試:
if not "%_OLD_VIRTUAL_PATH%" == "" (
set PATH=%_OLD_VIRTUAL_PATH%
)
並且相信我,如果你進入Windows cmd腳本,期望它像你在bash中所擁有的那樣,那么你的頭腦很快就會非常痛苦。 如果cmd腳本不是絕對要求,您可能需要考慮使用其他一些腳本語言(PowerShell,Python,PERL - 任何東西)。 cmd腳本編寫的最重要的事情(也許唯一的事情)是它已經安裝在每個Windows機器上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.