2017-07-11 20 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" 

在评论中删除了过多的空白,所以我无法证明。