2015-10-16 204 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'在嵌套循環中使用,否則必須從其中斷處繼續 –