有幾個正確方法可以做到這一點,一個錯誤方式。糟糕的方法是這樣的:
for /l %%x in (110, -2, 100) do (
set /a totalCount = %totalCount% + %%x
)
因爲%totalCount%
擴大只是一次,在執行之前for
,所以和的值始終爲0加上每學期。
一種可能的解決方案是使用延遲擴展作爲戴爾建議:
echo off
setlocal enabledelayedexpansion
set /a totalCount = 0
for /l %%x in (110, -2, 100) do (
set /a totalCount = !totalCount! + %%x
)
echo total is %totalCount%
這樣,!totalCount!
值在每個週期for
正確替換。然而,這是沒有必要要麼,因爲set /A
命令本身每次執行時間花費的變量當前值:
echo off
set /a totalCount = 0
for /l %%x in (110, -2, 100) do (
set /a totalCount = totalCount + %%x
)
echo total is %totalCount%
此外,set /A
命令有辦法增量變動的變量,唐甚至不需要寫出它的名字,所以這個討論的問題完全消失了:
echo off
set /a totalCount = 0
for /l %%x in (110, -2, 100) do (
set /a totalCount += %%x
)
echo total is %totalCount%