18

我正在开发一个 CMD 批次。我想在其中做一些数学运算。这个公式:(x+1)100:y

所以在批量中,x = %x%, and y = %y%. 我知道如何设置变量。现在,如何批量计算呢?(Windows 命令)

我需要额外的东西吗?

(我需要 Windows XP 到 7 的用户可以使用它。)

4

4 回答 4

35

set 命令支持一些有限的计算。在你的情况下,你想要: set /a result=(100*x)/y

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

于 2009-12-08T19:14:26.197 回答
11
@echo off

set x=42
set y=5

set /a z = 100 * x / y

echo %z%

set /a命令允许您将数学表达式的结果分配给变量(此时,%不需要在这些表达式中的变量名称周围)。请参阅set /?支持的运算符列表和详细信息。

请注意,Windows 批处理文件不支持浮点运算,因此如果表达式结果是小数,则只会计算整数部分。例如,3/2评估为12/3评估为0

于 2009-12-08T19:18:41.180 回答
3

不要批量做数学。如果你正在做百分比,你可能有小数并且批处理不支持小数。(浮动)。使用 vbscript 或更好的东西。

将以下内容另存为 caculate.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
于 2009-12-09T01:33:29.090 回答
2
  • set /a(任何算术)
  • set /a 2+2添加
  • set /a 2-2 减法
  • set /a 2*2倍增
  • set /a 2/2划分
  • set /a 2^2指数

使用方括号和圆括号显示 ex 等式的性质。2(2+2)=8显示分配属性。

于 2011-03-03T21:17:59.313 回答