2014-01-25 43 views
0

我剛開始學習批處理,它給我帶來很多麻煩。我想要做的是首先輸入3個不同的變量,然後將它們變成一個變量。然後,我想循環通過該變量來總結其所有數字。循環遍歷一個變量並求和其組件

下面是一個例子:

變量1:123

變量2:456

Variable3:789

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +9 = 45

這是我到目前爲止的代碼:

@echo off 
SET /p var1="Enter var 1" 
SET /p var2="Enter var 2" 
SET /p var3="Enter var 3" 
SET allvars=%var1%%var2%%var3% 
set sum = 0 
FOR %i IN (%allvars%) DO command [ %sum% = %sum% + %i% ] 
echo %sum% 

我從來沒有寫過FOR循環的批處理,所以我猜我犯了一個與synax的巨大錯誤。任何幫助將不勝感激!

+0

了現在':)' – Endoro

回答

1

更好的例子:

@echo off &setlocal disableDelayedExpansion 
SET /p "var1=Enter var 1 " 
SET /p "var2=Enter var 2 " 
SET /p "var3=Enter var 3 " 
SET "allvars=%var1%%var2%%var3%" 
for /f "delims=:" %%i in ('"(@echo(%allvars%&@echo()|findstr /o $"') do set /a len=%%i-4 
set /a sum=0 
FOR /l %%i IN (0,1,%len%) DO call set /a sum+=%%allvars:~%%i,1%% 
echo %sum% 
+0

非常感謝你,它的工作原理!我不想太需要,但是有什麼辦法可以解釋兩個循環嗎?我不知道這兩個循環會發生什麼。 – Guy

+0

@Matthew第一個循環使用'findstr/o'([findstr語法](http://ss64.com/nt/findstr.html))來測量'%allvars%'的長度。第二個循環使用字符串轉換函數來獲取用於添加的一個字符的子字符串([syntax](http://ss64.com/nt/syntax-substring.html))。 – Endoro