Math on batch (win)
set /a
(any arithmatic)set /a 2+2
addingset /a 2-2
subtractingset /a 2*2
multiplyingset /a 2/2
devidingset /a 2^2
exponet
use brackets and parentheses to show the properties of the equations
for ex. 2(2+2)=8
Shows distributive property.
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
@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.
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%
.