我想打印以下内容:
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
技巧使用解析怪癖来检索变量的当前(运行时)值。
这是“官方”方式:
ECHO OFF
setlocal enabledelayedexpansion
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO !B!
)
在 delayedexpansion
模式下,!var!
检索 var
的值,因为它在运行时发生变化。这并非没有缺点,但您需要阅读 delayedexpansion
以获取有关该问题的指南。
关于batch-file - 在 Batch 中使用变量在循环中执行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107608/