批处理中的数学运算(Windows)

21

我正在开发一个CMD批处理程序。希望在其中进行一些数学计算。公式如下:(x+1)100:y

因此,在批处理中,x = %x%,y = %y%。我知道如何设置变量。现在,批处理如何计算呢?(WINDOWS CMD)

我需要额外的什么吗?

(我希望这个批处理程序能够在Windows XP至7的计算机上使用。)


你想根据两个批处理文件变量“x”和“y”计算百分比吗? - Roger Lipscombe
4个回答

38

set 命令支持一些有限的计算。在你的情况下,你想要执行:

set /a result=(100*x)/y

运行 set /? 来查看完整的文档以了解支持的内容。 /a 开关会自动进行变量替换,因此您可以使用 x 代替 %x%


15
@echo off

set x=42
set y=5

set /a z = 100 * x / y

echo %z%
set /a 命令允许你将数学表达式的结果赋值给一个变量(在此过程中,这些表达式中的变量名周围的 % 符号是不必要的)。请参见 set /? 以获取支持的运算符列表和详细信息。
请注意,Windows 批处理文件不支持浮点运算,因此如果表达式的结果是小数,只计算整数部分。例如,3/2 的计算结果为 1,而 2/3 的计算结果为 0

3

不要在批处理中进行数学计算。如果你需要计算百分比,可能会有小数,而批处理不支持小数(浮点数)。使用VBScript或更好的工具。

将以下内容保存为calculate.vbs:

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
x = objArgs(0)
y = objArgs(1)
WScript.Echo ( x + 1 ) * 100  / y

在命令行上执行

c:\test> cscript //nologo calculate.vbs 4 5

顺便提一下,我忘了它不是 x+1 而是 y+1。所以像这样:(x * 100) / (y + 1)。 - Deniz Zoeteman

2
  • set /a(任何算数运算)
  • set /a 2+2 加法
  • set /a 2-2 减法
  • set /a 2*2 乘法
  • set /a 2/2 除法
  • set /a 2^2 指数

使用括号来显示方程式的属性,例如:2(2+2)=8 显示分配律。


5
这些示例需要加引号:set /a "2^2"需要引号(没有引号就只是22),并且^表示逻辑异或。最后一个示例错误,因为它缺少运算符:2*(2+2)=8 - Zaq
4
“^”表示异或运算,而不是乘方。 - Dave Cousineau

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