在批处理脚本中计算两个变量的总和

71

这是我第一次使用Stack Overflow,请对我的问题宽容点。我一直在使用批处理编程,并使用DOSbox在我的Linux机器上运行它们。

以下是我一直使用的代码:

@echo off
set a=3
set b=4
set c=%a%+%b%
echo %c%
set d=%c%+1
echo %d%

那个的输出是:

3+4
3+4+1

我该如何将这两个变量相加而不是输出字符串?

6个回答

98
你需要在set命令中使用属性/a
例如,
set /a "c=%a%+%b%"

这使你可以在"set"命令中使用算术表达式,而不是简单的连接。

然后你的代码将变为:

@set a=3
@set b=4
@set /a "c=%a%+%b%"
echo %c%
@set /a "d=%c%+1"
echo %d%

将输出:

7
8

3
我尝试了那个方法,但它没有起作用。输出结果为“ECHO is off and ECHO is off”(回声关闭)。 - swarajd
1
我在我的Windows XP机器上安装了DOSBox并复制了你所看到的情况。 DOSBox似乎无法处理算术设置SET /a,并且我在他们的sourceforge中找不到任何补丁信息。 你可能需要尝试不同的dos模拟器才能使其正常工作。 - staticbeast
我发现你必须使用变量。也就是说,set /a dt=%dd%-%daysBack% 是可行的,但 set /a c=%dd%-7 则不行。希望对潜水者有所帮助。 - Joe Johnston
2
set /a c = %a% + %b% gives me Missing operand. - johny why
2
@staticbeast 因为 set /a 是 Windows NT 的 cmd 扩展命令。DOS 没有这个功能。Windows cmd 不是 DOS - phuclv
显示剩余7条评论

3
根据此处提供的有用运算符列表[运算符可以被视为数学表达式](在这里),您可以通过使用 += 运算符而不是 + 运算符告诉批处理编译器您正在操作变量而不是固定数字。
希望我能帮到您!

1
@ECHO OFF
ECHO Welcome to my calculator!
ECHO What is the number you want to insert to find the sum?
SET /P Num1=
ECHO What is the second number? 
SET /P Num2=
SET /A Ans=%Num1%+%Num2%
ECHO The sum is: %Ans%
PAUSE>NUL

3
在这个网站上,每个人都可以格式化其他人的帖子。这不是很棒吗?=D - Sinatr

1
@ECHO OFF
TITLE Addition
ECHO Type the first number you wish to add:
SET /P Num1Add=
ECHO Type the second number you want to add to the first number:
SET /P Num2Add=
ECHO.
SET /A Ans=%Num1Add%+%Num2Add%
ECHO The result is: %Ans%
ECHO.
ECHO Press any key to exit.
PAUSE>NUL

1

您可以使用以下代码解决包括加法在内的任何方程:

@echo off

title Richie's Calculator 3.0

:main

echo Welcome to Richie's Calculator 3.0

echo Press any key to begin calculating...

pause>nul

echo Enter An Equation

echo Example: 1+1

set /p 

set /a sum=%equation%

echo.

echo The Answer Is:

echo %sum%

echo.

echo Press any key to return to the main menu

pause>nul

cls

goto main

就术语而言,这里并没有“解决任何方程式”。相反,您正在评估涉及具有已知值的变量的表达式。解决任意方程需要某种符号数学,并且会更加复杂! - Some Guy

-1

这是我的

echo Math+ 
ECHO First num:
 SET /P a= 
ECHO Second num:
 SET /P b=
 set /a s=%a%+%b% 
echo Result: %s%

这个回答与Tamil selvan的回答几乎相同(3年前)。 - jeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接