在 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

如何在我的代码中同时使用 AB 时获得所需的输出?

ECHO OFF
setlocal
FOR /L %%A in (1,1,5) DO (
    SET /a "B=%%A-1"
    call ECHO %%B%%
)

由于您没有使用 setlocalB 将设置为之前 运行 的值。 %B% 将被 4 取代,因为 B 被之前的 运行 设置为 4call 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 以获取有关该问题的指南。