Isl*_*rol 3 variables for-loop arithmetic-expressions batch-file echo
我想打印以下内容:
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个:
ECHO OFF
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO %B%
)
Run Code Online (Sandbox Code Playgroud)
然而,这给了我:
4
4
4
4
4
Run Code Online (Sandbox Code Playgroud)
A在我的代码中同时使用和时,如何实现所需的输出B?
ECHO OFF
setlocal
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
call ECHO %%B%%
)
Run Code Online (Sandbox Code Playgroud)
由于您没有使用setlocal,B将被设置为上次运行的值。%B%将被替换为4since被上次运行B设置为。4该call echo技巧使用解析怪癖来检索变量的当前(运行时)值。
这是“官方”方式:
ECHO OFF
setlocal enabledelayedexpansion
FOR /L %%A in (1,1,5) DO (
SET /a "B=%%A-1"
ECHO !B!
)
Run Code Online (Sandbox Code Playgroud)
在delayedexpansion模式下,检索运行时更改!var!的值。var这并非没有缺点,但您需要阅读delayedexpansion有关该问题的指南。