【问题标题】:Math on batch (win)批量数学(获胜)
【发布时间】:2010-12-24 13:24:58
【问题描述】:

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

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

我需要额外的东西吗?

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

【问题讨论】:

  • 你想计算一个百分比,给定两个批处理文件变量,'x' 和 'y'?

标签: math windows-7 batch-file cmd formula


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    @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

    【讨论】:

      【解决方案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
      

      【讨论】:

      • 顺便说一句;我忘记了不是x+1而是y+1。所以就像 (x * 100) / ( y + 1 )
      【解决方案4】:
      • set /a(任何算术)
      • set /a 2+2添加
      • set /a 2-2减法
      • set /a 2*2 乘法
      • set /a 2/2分开
      • set /a 2^2exponet

      使用方括号和圆括号来显示方程的性质 例如。 2(2+2)=8 显示分配属性。

      【讨论】:

      • 这些例子需要引号 set /a "2^2" 需要引号(没有引号它只是 22)和 ^ 是逻辑异或。最后一个是错误,因为它缺少一个运算符:2*(2+2)=8
      • ^ 是 XOR 不是指数
      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2019-07-07
      • 2016-05-01
      • 2021-10-17
      • 2016-10-24
      相关资源
      最近更新 更多