2009-12-08 106 views
13

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

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

我需要额外的东西吗?

(我需要这是可用于Windows XP的用户7)

+0

你想制定一个百分比,给出两个批处理文件变量'x'和'y'? – 2009-12-08 19:14:28

回答

27

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

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

运行set /?查看关于支持的完整文档。 /a交换机也会自动变量替换,因此您可以使用x而不是%x%

5
@echo off 

set x=42 
set y=5 

set /a z = 100 * x/y 

echo %z% 

set /a命令可以分配一个数学表达式,以变量的结果(在该围绕在这些表达式中的变量名的%的不必需的)。请参阅set /?以获取支持的操作员列表和详细信息。

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

2

不要数学批量。如果你正在做百分比,你可能有小数,批次不支持小数(浮动)。使用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 
+0

我不需要小数的工作。 – 2009-12-10 18:58:33

+0

和btw;我忘了它不是x + 1,而是y + 1。所以像(x * 100)/(y + 1) – 2009-12-10 18:59:49

2
  • set /a(任何arithmatic)
  • set /a 2+2加入
  • set /a 2-2减去
  • set /a 2*2乘以
  • set /a 2/2 deviding
  • set /a 2^2 exponet

使用括号和括号显示的公式 为前的属性。 2(2+2)=8显示分配属性。

+3

这些例子需要quotes'set/a“2^2”'需要引号(不含引号只有22),而'^'是逻辑异或。最后一个是错误的,因为它缺少一个运算符:'2 *(2 + 2)'='8' – Zaq 2014-05-30 14:22:20