我希望我的变量res
在循环内更新,但直到第二次迭代后它才会更新。
这是我的代码:
@echo off
set /a res=10
:loop
if %res% gtr 100 (
goto endLoop
) else (
set /a res=res*10
rem Here the 'res' shouldn't it be 100?
echo the result is : %res%
rem Here the first iteration display 10 not 100.
goto loop
)
:endLoop
pause > nul
对此有解释吗?
答案 0 :(得分:1)
作为延迟扩展的使用示例,请修改以下代码:
@Echo Off
SetLocal EnableDelayedExpansion
Set "res=10"
:loop
If %res% Lss 100 (
Set/A res*=10
Echo the result is : !res!
GoTo loop
)
Pause>Nul
在这种情况下,有一种不使用延迟扩展的替代方案,但是我建议你坚持使用前者,直到你有足够的信心去理解读取和解析事物的顺序:
@Echo Off
Set "res=10"
:loop
If %res% Lss 100 (
Set/A res*=10
Call Echo the result is : %%res%%
GoTo loop
)
Pause>Nul