使用批处理中的变量执行循环算术

时间:2016-12-12 18:54:57

标签: batch-file variables for-loop echo arithmetic-expressions

我想打印以下内容:

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来实现所需的输出?

1 个答案:

答案 0 :(得分:2)

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

由于您未使用setlocal,因此B将设置为上一次运行的值。 %B%将替换为4,因为上次运行时B设置为4call echo技巧使用解析怪癖来检索变量的当前(运行时)值。

这里"官员"方式:

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

delayedexpansion模式下,!var!会在运行时更改var的值。这并非没有缺点,但您需要阅读delayedexpansion以获取有关该问题的指南。