Kan*_*esh 14 batch-file command-prompt
我想在批处理脚本中做这样的事情.如果这是正确或可能的方式或任何其他方式,请告诉我?
set var1=A
set var2=B
set AB=hi
set newvar=%var1%%var2%
echo %newvar%
Run Code Online (Sandbox Code Playgroud)
这应该产生值"hi".
Ser*_*bry 22
启用延迟变量扩展解决了您的问题,脚本生成"hi":
setlocal EnableDelayedExpansion
set var1=A
set var2=B
set AB=hi
set newvar=!%var1%%var2%!
echo %newvar%
Run Code Online (Sandbox Code Playgroud)
小智 7
你可以在没有的情况下完成它setlocal,因为setlocal命令变量将无法生存,endlocal因为它是在中创建的setlocal.通过这种方式,变量将以正确的方式定义.
为此,请使用以下代码:
set var1=A
set var2=B
set AB=hi
call set newvar=%%%var1%%var2%%%
echo %newvar%
Run Code Online (Sandbox Code Playgroud)
注意:您必须call在设置变量之前使用它,否则它将无效.
方法是正确的,但可以使用扩展的 set-syntax 进行一些改进。
set "var=xyz"
Run Code Online (Sandbox Code Playgroud)
将 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
Run Code Online (Sandbox Code Playgroud)