我想打印以下内容:
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
来实现所需的输出?
答案 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
设置为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
以获取有关该问题的指南。