簡體   English   中英

如何在Windows批處理文件中將PATH設置為帶空格的另一個變量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM