Math on batch (win)
Solution 1
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%
.
Solution 2
@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.
Solution 3
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
Solution 4
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.
Deniz Zoeteman
Back-end (web)development. Specialised mostly in PHP.
Updated on July 09, 2022Comments
-
Deniz Zoeteman almost 2 years
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 the variables. Now, how can batch calculate this? (WINDOWS CMD)Do I need something extra?
(I need this to be available to users of Windows XP to 7.)