2015-10-16 154 views
0

我正在为批处理文件写一个for循环,这是为每次迭代的变量做算术运算。循环如下所示:批处理文件循环的算术

@echo off 
setlocal enabledelayedexpansion 
SET d=10 
echo !d! 

for /L %%t IN (0,1,9) DO (
    SET /A d = %d% + 10 
    echo !d! 
) 

该算术仅适用于第一次迭代。 “D”的同时,开始在10和十每次加(10 20 30 ...),但它总是在20停止在该命令的输出提示会显示:

10 
20 
20 
... 
20 
20 

我怎样才能写这个,所以它会为整个循环增加十个?

回答

2

你很近,但你错过了在一个地方使用延迟扩展。如果你需要的算术在一个循环的学术活动

变化SET /A d = %d% + 10SET /A d = !d! + 10

@echo off 
setlocal enabledelayedexpansion 
SET d=10 
echo !d! 

for /L %%t IN (0,1,9) DO (
    SET /A d = !d! + 10 
    echo !d! 
) 
+4

或者'set/A“d + = 10”'或'set/A d = d + 10' – JosefZ

+0

Thanks @SomethingDark and @JosefZ!那就是诀窍! –

1

做的@JosefZ说。如果你想用较少的代码得到相同的结果,你可以这样做。

for /L %%t IN (20,10,110) DO echo %%t 
+0

谢谢!我可以避开循环,但正如你所说,我需要这样做的学术活动。另外,变量'd'在嵌套循环中使用,否则必须从其中断处继续 –