Jac*_*cob 3 for-loop batch-file
我有以下代码:
@echo off
SET ITER=0
for %%i in (%*) do (
SET ITER+=1
ECHO %ITER%
)
Run Code Online (Sandbox Code Playgroud)
输出是(对于三个参数):
0
0
0
Run Code Online (Sandbox Code Playgroud)
预期产量:
1
2
3
Run Code Online (Sandbox Code Playgroud)
为什么我不能在for
循环中访问更新的变量?
使用百分比扩展变量是在执行语句/块之前完成的.
所以在你的情况下,完成块在echo %ITER%
执行之前被扩展为常量echo 0
.
变量ITER本身在循环中正确更新.
为避免这种情况,您可以使用延迟扩展,这类似于扩展百分比,但仅在执行时
@echo off
setlocal EnableDelayedExpansion
SET ITER=0
for %%i in (%*) do (
SET /a ITER+=1
ECHO !ITER!
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3725 次 |
最近记录: |