2014-01-25 46 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