我想在批处理脚本中做这样的事情。如果这是正确的或可能的方式或任何其他方式,请告诉我?
set var1=A
set var2=B
set AB=hi
set newvar=%var1%%var2%
echo %newvar%
这应该产生值“hi”。
答案 0 :(得分:19)
启用延迟变量扩展可以解决您的问题,脚本会生成“hi”:
setlocal EnableDelayedExpansion
set var1=A
set var2=B
set AB=hi
set newvar=!%var1%%var2%!
echo %newvar%
答案 1 :(得分:6)
您可以在没有setlocal
的情况下执行此操作,因为setlocal
命令变量将无法在endlocal
生存,因为它是在setlocal
中创建的。通过这种方式,变量将以正确的方式定义。
为此,请使用此代码:
set var1=A
set var2=B
set AB=hi
call set newvar=%%%var1%%var2%%%
echo %newvar%
注意:在设置变量之前,你必须使用call
,否则它将无效。
答案 2 :(得分:2)
方法是正确的,但可以使用扩展的set-syntax进行一些改进。
set "var=xyz"
将var设置为内容,直到最后一个引号,这样可以确保不会追加“隐藏”空格。
您的代码看起来像
set "var1=A"
set "var2=B"
set "AB=hi"
set "newvar=%var1%%var2%"
echo %newvar% is the concat of var1 and var2
echo !%newvar%! is the indirect content of newvar