在批处理脚本中不立即处理字符串中的变量

在批处理脚本中不立即处理字符串中的变量

我想知道是否可以不立即处理包含变量的变量,而仅在被询问时才处理。例如这个批次:

 @echo off
 setlocal EnableDelayedExpansion
 set VA=Two
 set VAR=!VA! people
 set VA=Three
 ECHO !VAR!

打印“两个人”。是否可以只在最后使用 echo 进行解析,以输出“三个人”?

答案1

这是不可能的。一旦变量被赋值,它就不再依赖于赋值时使用的变量或文本。

实现所需输出的最简单方法是简单地回显 VA 变量和末尾的文本。基本上,进行所有计算,然后在最后汇总输出。

@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause

答案2

只需在最后再次设置 VAR 即可。设置变量的次数没有限制。

请记住,批处理文件只是您可以在命令提示符中输入的命令列表。每一行基本上都是按时间顺序一次执行的一条命令。

因此,如果您需要在适当的条件下提高 VAR,请在该时刻之前进行设置。示例:

@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=%VA% people
echo %VAR%

set VA=Three
::We want to update VAR, so lets set it again:
set VAR=%VA% people
echo %VAR%

pause

批处理文件中的 :: 与 REM 相同

相关内容