在 Batch 中使用变量在循环中执行算术运算
Perform arithmetic in loop with variables in Batch
我要打印以下内容:
0
1
2
3
4
我试过这个:
ECHO OFF
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO %B%
)
然而,这给了我:
4
4
4
4
4
如何在我的代码中同时使用 A
和 B
时获得所需的输出?
ECHO OFF
setlocal
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
call ECHO %%B%%
)
由于您没有使用 setlocal
,B
将设置为之前 运行 的值。 %B%
将被 4
取代,因为 B
被之前的 运行 设置为 4
。 call echo
技巧使用解析怪癖来检索变量的当前(运行 时间)值。
这里是"the official"方式:
ECHO OFF
setlocal enabledelayedexpansion
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO !B!
)
在 delayedexpansion
模式下,!var!
检索 var
在 运行 时发生变化的值。这并非没有缺点,但您需要阅读 delayedexpansion
以获取有关该问题的指南。
我要打印以下内容:
0
1
2
3
4
我试过这个:
ECHO OFF
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO %B%
)
然而,这给了我:
4
4
4
4
4
如何在我的代码中同时使用 A
和 B
时获得所需的输出?
ECHO OFF
setlocal
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
call ECHO %%B%%
)
由于您没有使用 setlocal
,B
将设置为之前 运行 的值。 %B%
将被 4
取代,因为 B
被之前的 运行 设置为 4
。 call echo
技巧使用解析怪癖来检索变量的当前(运行 时间)值。
这里是"the official"方式:
ECHO OFF
setlocal enabledelayedexpansion
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO !B!
)
在 delayedexpansion
模式下,!var!
检索 var
在 运行 时发生变化的值。这并非没有缺点,但您需要阅读 delayedexpansion
以获取有关该问题的指南。