2017-07-11 23 views
0

空間的Windows CMD變量設置使我的批處理文件讀取,我試圖對準SET聲明如下在變量名

SET SVN_URL   = http://server.test.com 
SET SVN_USER_NAME  = foo 
SET SVN_USER_PASSWORD = pass 

如何過,當我嘗試回聲%SVN_URL%我什麼也沒得到。我發現,變量名可以有空格https://ss64.com/nt/set.html

所以我的變量會%SVN_URL %(含空格)

是不是什麼辦法來解決呢?!

+5

Ahm ...除去空間怎麼樣? – aschipfl

+0

當使用'set'命令時,你完全想避免'='周圍的空格;如果您需要可讀的文檔,請始終將您的'set'語句格式化爲'set varname = value'並添加註釋('rem'語句)。 –

+0

var name前面的空格沒有問題,如果你需要對齊等號,heftily ;-)爲了避免在varname或內容中無意的前導/尾隨空格我會雙引號「Set」SVN_URL = http: //server.test.com「' – LotPings

回答

2

的問題是空間上set

兩個雙方顯著這將設置你的價值觀(請注意,每個值將包含一個前導空格)

SET   SVN_URL= http://server.test.com 
SET  SVN_USER_NAME= foo 
SET SVN_USER_PASSWORD= pass 

for /f "tokens=1*delims== " %%a in (SVN_URL   = http://server.test.com) do set "%%a=%%b" 
for /f "tokens=1*delims== " %%a in (SET SVN_USER_NAME  = foo) do set "%%a=%%b" 
for /f "tokens=1*delims== " %%a in (SET SVN_USER_PASSWORD = pass) do set "%%a=%%b" 

call :setv SVN_URL   = http://server.test.com 
call :setv SVN_USER_NAME  = foo 
call :setv SVN_USER_PASSWORD = pass 

... 
:setv 
set "%~1=%~2" 
goto :eof 

注意到這最後,您可能需要將該值用引號引起來。

1

與Magoo的第一個版本類似,您可以對齊等號以適合您的音效或任何其他音效。

SET   "SVN_URL=http://server.test.com" 
SET  "SVN_USER_NAME=foo" 
SET "SVN_USER_PASSWORD=pass" 

在評論中刪除了過多的空白,所以我無法證明。