2012-05-11 49 views

回答

398

=之前的空格被解釋爲名稱的一部分,並且它後面的空格(以及引號)被解釋爲值的一部分。所以你創建的變量可以用%location %引用。如果這不是您想要的,請刪除定義中的額外空間。

+0

感謝布賴恩。問題解決了。 –

+5

如果'='之前的空格被解釋爲名稱的一部分,那麼變量*不能被引用爲'%location%',它必須被引用爲'%location%'。這是一個錯字嗎? –

+6

@可悲的變數:你是對的;似乎原來的答案成爲不正確編輯的受害者。 –

188

空格很重要。您創建了一個名爲'location '的變量,其值爲' "bob"'

如果你想在你的價值的報價,那麼你的代碼應該看起來像

set location="bob" 

如果你不想報價,那麼你的代碼應該看起來像

set location=bob 

或者更好的

set "location=bob" 

最後一個語法可以防止無意中的空格進入該值,並且還保護了再次t特殊字符,如& |等

+2

最後一個語法有什麼缺點嗎? – Wolf

+1

@狼 - 不,沒有缺點。但是,最有效的時間是有限的。只要該值不包含引號,那麼幾乎任何字符都可以出現在該值中,而不用擔心轉義。例外情況是'%',如果啓用了延遲擴展,則可能是'!'。但是,如果值確實包含引號,那麼您必須擔心什麼時候要逃避像'|','&'等毒物字符。 – dbenham

+1

這似乎與在Windows中設置環境變量相同。這是在批處理腳本中使用本地變量的唯一方法嗎? – parasrish

4

輸入location.bat

@echo off 
cls 

set /p "location"="bob" 
echo We're working with %location% 
pause 

輸出

We're working with bob 

(錯誤沒有做:space" "

相關問題