批处理延迟变量问题

@echo off
set a=1
set b=1
:to
set /a b+=1
echo %b%
if %b% lss %a%*50 goto to
set /a a+=1
echo %a%
if %a% lss 10 goto to
pause
变量b每递增50个,变量a就加1,怎么样才能达到预期目标.?

主要是不支持if 表达式中附加计算,所以要再借助一变量如:
:to
set/a b+=1,c=a*50
echo %b%
if %b% lss %c% goto :to
附注:看标题还以为是另一问题呢,另一网友答的代码虽无误,却是没必要去注意"延迟"问题
这种goto 循环可以用for /L代替,此时可能有变量延迟问题---在复合句中对于变量扩展如%a%不能反映此复合句内所作的改变会解释成整个复合句之前的值追问

谢谢,大高手~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-17
@echo off
setlocal enabledelayedexpansion
set a=1
set b=1
:to
set /a b+=1
echo b=!b!
set /a t=!a!*50
if !b! lss !t! goto to
set /a a+=1
echo a=!a!
if !a! lss 10 goto to
pause追问

真是感谢呢,帮了大忙了