Math on batch (win)

后端 未结 4 841
你的背包
你的背包 2020-12-15 21:58

I am developing a CMD batch. I want to do some math in it. This formula: (x+1)100:y

So in batch, x = %x%, and y = %y%. I know how to set t

相关标签:
4条回答
  • 2020-12-15 22:42
    • set /a (any arithmatic)
    • set /a 2+2 adding
    • set /a 2-2 subtracting
    • set /a 2*2 multiplying
    • set /a 2/2 deviding
    • set /a 2^2 exponet

    use brackets and parentheses to show the properties of the equations for ex. 2(2+2)=8 Shows distributive property.

    0 讨论(0)
  • 2020-12-15 22:50

    The set command supports some limited calculation. In your case, you want: set /a result=(100*x)/y

    Run set /? to see full documentation on what is supported. The /a switch does automatic variable substitution, so you can use x instead of %x%.

    0 讨论(0)
  • 2020-12-15 22:50
    @echo off
    
    set x=42
    set y=5
    
    set /a z = 100 * x / y
    
    echo %z%
    

    The set /a command allows you to assign the result of a mathematical expression to a variable (at that, the %'s around variable names in these expressions aren't required). See set /? for the list of supported operators and details.

    Note that Windows batch files don't support floating-point arithmetic, so if an expression result is a fractional number, only the integer part will be counted. For example, 3/2 evaluates as 1 and 2/3 as 0.

    0 讨论(0)
  • 2020-12-15 22:52

    DON'T do maths in batch. If you are doing percentage, you might have decimals and batch doesn't support decimals.(floating). Use vbscript or something better.

    save the below as caculate.vbs

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

    and on command line

    c:\test> cscript //nologo calculate.vbs 4 5
    
    0 讨论(0)
提交回复
热议问题