banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[BATCH]批处理中enabledelayedexpansion启动变量延迟

一个简单的需求,批量定义变量并进行赋值运算,然后计算变量的结果值。

方法:

  1. 使用 SET /A 命令来暂存表达式的中间计算结果。
  2. 使用 setlocal enabledelayedexpansion 命令,避免解释器在循环体中实时展开变量。
  3. 使用 & 符号将表达式合并为一行,启用 setlocal enabledelayedexpansion。启动变量延迟。

@echo on
set var4="test"
for /l %%i in (1,1,3) do set var%%i=%%i
echo %var1%
echo %var2%
echo %var3%
echo %var4%
setlocal enabledelayedexpansion
for /l %%j in (1,1,3) do ( set /a t= var%%j & echo !t! )
for /l %%j in (1,1,3) do (
set /a t= var%%j
echo !t!
)
endlocal

pause 输出 1 2 3 4

关闭 enabledelayedexpansion 输出 4 4 4 4

关于 setlocal 和 enabledelayedexpansion 的更多信息,请参阅:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772046(v=ws.11)?redirectedfrom=MSDN

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。