我正在开发一个CMD批处理程序。希望在其中进行一些数学计算。公式如下:(x+1)100:y
因此,在批处理中,x = %x%,y = %y%
。我知道如何设置变量。现在,批处理如何计算呢?(WINDOWS CMD)
我需要额外的什么吗?
(我希望这个批处理程序能够在Windows XP至7的计算机上使用。)
我正在开发一个CMD批处理程序。希望在其中进行一些数学计算。公式如下:(x+1)100:y
因此,在批处理中,x = %x%,y = %y%
。我知道如何设置变量。现在,批处理如何计算呢?(WINDOWS CMD)
我需要额外的什么吗?
(我希望这个批处理程序能够在Windows XP至7的计算机上使用。)
set 命令支持一些有限的计算。在你的情况下,你想要执行:
set /a result=(100*x)/y
运行 set /?
来查看完整的文档以了解支持的内容。 /a
开关会自动进行变量替换,因此您可以使用 x
代替 %x%
。
@echo off
set x=42
set y=5
set /a z = 100 * x / y
echo %z%
set /a
命令允许你将数学表达式的结果赋值给一个变量(在此过程中,这些表达式中的变量名周围的 %
符号是不必要的)。请参见 set /?
以获取支持的运算符列表和详细信息。不要在批处理中进行数学计算。如果你需要计算百分比,可能会有小数,而批处理不支持小数(浮点数)。使用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
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
显示分配律。
set /a "2^2"
需要引号(没有引号就只是22),并且^
表示逻辑异或。最后一个示例错误,因为它缺少运算符:2*(2+2)
=8
。 - Zaq