我想在批处理脚本中实现这样的功能。请告诉我这是否是正确或可能的方法,或者是否有其他方法?
set var1=A
set var2=B
set AB=hi
set newvar=%var1%%var2%
echo %newvar%
这应该产生值“hi”。
我想在批处理脚本中实现这样的功能。请告诉我这是否是正确或可能的方法,或者是否有其他方法?
set var1=A
set var2=B
set AB=hi
set newvar=%var1%%var2%
echo %newvar%
这应该产生值“hi”。
启用延迟变量扩展可以解决您的问题,脚本将输出"hi":
setlocal EnableDelayedExpansion
set var1=A
set var2=B
set AB=hi
set newvar=!%var1%%var2%!
echo %newvar%
您可以不使用 setlocal
命令,因为变量在 setlocal
中创建,所以在 endlocal
后变量将无法保留。通过以下代码,您可以正确定义变量:
请使用以下代码:
set var1=A
set var2=B
set AB=hi
call set newvar=%%%var1%%var2%%%
echo %newvar%
call
,否则它将无法正常工作。setlocal enabledelayedexpansion
更有趣。它还可以使用全局变量。 - ender_scythecall
再调用set
,而前三行却不需要? - R. Bourgeonset "var=xyz"
将变量设置为最后一个引号之前的内容,这可以确保不会附加任何“隐藏”的空格。
您的代码应该是这样的
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