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.)
Linger
15k23 gold badges52 silver badges79 bronze badges
asked Dec 8, 2009 at 19:06
Deniz ZoetemanDeniz Zoeteman
9,72126 gold badges70 silver badges98 bronze badges
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%
.
koen
5,4057 gold badges50 silver badges89 bronze badges
answered Dec 8, 2009 at 19:14
0
@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.
answered Dec 8, 2009 at 19:18
HelenHelen
88.2k17 gold badges248 silver badges314 bronze badges
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
answered Dec 9, 2009 at 1:33
ghostdog74ghostdog74
329k56 gold badges259 silver badges343 bronze badges
1
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.
Peter Oram
6,2532 gold badges28 silver badges40 bronze badges
answered Mar 3, 2011 at 21:17
2
На чтение 6 мин Просмотров 2.4к. Опубликовано
В этой статье мы рассмотрим базовые операторы cmd командной строки ввода-вывода данных, математические выражении, а также операторы, которые позволяют объединить несколько команд.
Командная строка позволяет передавать значения или данные не только в консольном окне, но и за его пределами. Так, можно перенаправить результат выполнения утилиты в файл, или же наоборот, извлечь данные хранящиеся во внешнем файле и передать их как параметры.
Давайте посмотрим на следующие операторы командной строки:
- Команда1 | команда2 – результат, полученный после выполнения команды1 будет служить как входной параметр для команды2.
- Команда<[путь] имя файла – Тут команда принимает содержимое файла как входной параметр.
- Команда>[путь] имя файла – Результат выполнения команды будет выведен не на экран консоли, а во внешний файл. Если указанного внешнего файл нет, то он будет создан, если файл существует – произойдет его перезапись.
- Команда>>[путь] имя файла – Аналог предыдущей команды, но тут, если файл существует, до данные допишутся в конец уже имеющихся в нем данных.
- Команда<[путь] имя файла> [путь] имя файла – в данном примере, данные, из внешнего файла передаются команде как параметры, а вывод результата будет направляться в другой внешний документ.
Как вы уже заметили, перенаправление данных осуществляется с помощью четырех операторов (cmd) командной строки: вывод (>, >>) и ввод (< ,<<), при чем, если стрелочка используется в комбинации с файлом один раз, то произойдет его полная перезапись, если дважды – то произойдет дописывание данных. Если не указывать полный путь, а просто прописать имя файла, то он создастся в той папке, из которой происходит запуск команды.
Теперь давайте обратим внимание на оператор конвейеризации (“|”), он довольно удобен, так как позволяет передавать результат выполнения из одной команды сразу в другую, а из той в третью и так далее.
Для примера, утилита dir позволяет получить список файлов и папок, а утилита find отвечает за поиск в документах, или в тексте ввода и выводит строки, соответствующие условию. Так, следующая команда покажет список всех файлов с расширение .txt в текущем каталоге:
В данном случае утилита dir возвращает список файлов и папок в текущем каталоге, данный список передается как входной параметр утилите find (сотрите статью «Утилита FIND«), и уже в этом списке происходит поиск вхождения “.txt”.
Следующие операторы командной строки, которые стоит рассмотреть, это &, && и ||:
- Команда1 & Команда2 – сначала выполнятся Команда1, а уже потом Команда2
- Команда1 && Команда2 — Команда2 будет выполняться только в том случае, если произошло успешное выполнение Команды1
- Команда1 || Команда2 — Команда2 будет выполняться только в том случае, если Команда1 не смогла выполниться.
- (Команда1 & Команда2) && Команда3 – Тут с помощью круглых скобок происходит группирование Команды1 и Команды2, если данная группа команд выполнится успешно, произойдет выполнение Команды3.
- (Команда1 & Команда2) || Команда3 — Тут с помощью круглых скобок происходит группирование Команды1 и Команды2, если данная группа команд не выполняется, произойдет выполнение Команды3.
Как видим, операторы командной строки (cmd), приведенные выше позволяют значительно сэкономить программный код и в некоторых случаях заменить условный оператор if и даже цикл.
Стоит учитывать один важный момент. При выполнении группы команд, их обязательно стоит заключать в круглые скобки, иначе произойдет совсем другой результат, чем ожидалось. Посмотрим на следующий пример:
dir & ipconfig & hostname>d:\work\log.txt
Сперва покажется, что в файл log.txt должно вывестись содержимое текущего каталога, настройки сети и имя компьютера, но это не так! Файл будет содержать только результат выполнения команды hostname. Что бы все сработало правильно, нужно все три команды заключить в круглые скобки:
(dir & ipconfig & hostname)>d:\work\log.txt
Хорошо теперь давайте рассмотри математические операторы cmd (командной строки). Как и в зыках программирования vbscript и jscript сервера Windows Script Host, в сценариях cmd присутствуют следующие математические выражения:
- арифметические операторы – выполнение рядовых математических операций (+ (сложение), — (вычитание), * (умножение), /(деление), % (модуль));
- операторы присваивания – знак равенства без или с арифметическими операциями.
- операторы сравнения – отвечают за сравнение между собой двух операндов, как правило, используются в условном операторе if.
- побитовые операторы – работа с двоичными данными.
Что бы произвести математическое вычисление, нужно использовать ключевое слово set с ключом /А (арифметика). Это связано с тем, что любое значении, которое присваивается переменной будет типа “строка”, а ключ /А говорит системе, что мы хотим работать с цифрами. Откройте редактор и пропишите в нем следующий код, далее сохраните как test.bat:
@echo off set/A var1=100+25 echo%var1% set/A var1=100-25 echo%var1% set/A var1=25*5 echo%var1% set/A var1=100/3 echo%var1%
Что бы вам не приходилось делать дополнительные переходы, а вы могли запустить сценарий из любой директории в окне командной строки, просто пропишите:
Тут <путь> — путь к каталогу, в котором вы храните свой сценарий.
Вернемся к примеру, в данному примере с помощью ключевого слова set мы объявляем переменную var1, которая будет хранить сумму чисел 100 и 25, после происходит вывод результата на экран. Далее мы используем остальные математические операции с подальшим выводом результата.
Диапазон поддерживаемых цифр от -2 в 32 степени до 2 в 32 степени, при выходе за эту границу, возникнет ошибка с кодом -2. Можно проводить вычисления не только с цифрами, но и со значениями переменных:
@echo off set var2=100 set var3=200 set/A var1=(%var2%+%var3%)/2 echo %var1%
В данном случае мы сначала объявляем две переменные, var2 со значением 100 и var3 со значением 200, потом в переменной var1 происходит сложении значений двух переменных, и деление результата на два с подальшим его выводом на экран.
Полезную роль могут сыграть операторы сравнения:
- += (сложение и присваивание)
- -= (вычитание и присваивание)
- *= (умножение и присваивание)
- /= (деление и присваивание)
- %= (деление по модулю и присваивание)
Подобные операторы применяются и в языке jscript и позволяют вместо такой строки:
прописать такую:
И так, в этой статье мы рассмотрели базовые cmd операторы командной строки.
By using the Batch Scripting of command prompt one could even design a normal basic calculator that takes expressions and returns the result. Type the following script in notepad or any other text editor software:
@echo off :a echo ________Calculator________ echo. set /p expression= Enter expression to calculate: set /a ans=%expression% echo. echo = %ans% echo pause cls goto a
After writing the above text in a text editor, save the file with the extension “ .bat “. To run the program, simply double-click on the saved file, the program will open and the code will get executed in Command Prompt. It should look something like:
Welcome screen!
Code Explanation and Test Cases:
- @echo off — signals Command Prompt to not display the commands (code).
- : a — the signals starting point of a loop.
- echo — same as print/println/printf/etc. Displays the specified message as output to the screen.
- echo. — will output a blank line.
- set — used to set value against a variable.
- set /p expression — /p signals that this is prompt. “Expression” is just a variable name.
- set /a ans – /a signal that variable has a numerical value. “ans” is the variable name.
- %ans% — calls the variable “ans”
- pause — will pause/ stop the program flow until the user will press a key (any key) and continue the program flow only when the users press a key (any).
- cls – clears the screen
- goto a- signals to go to the start point of the loop, effectively looping our calculator program so it can take in and calculate new expression.
Program Test Cases:
- The program can handle simple expression calculations like:
Calculating Simple Expression
- And it can also handle complex expressions, such as:
Calculating Complex Expression
Note:-
- The above program is calculating expressions by utilizing the calculator (that can perform simple arithmetic on 32-bit signed integers) that comes with Command Prompt.
- Since we are utilizing built-in calculator of Command Prompt, we can only perform following expression: + (addition), – (subtraction), * (multiplication), / (divide), % (modulo).
Last Updated :
07 Sep, 2020
Like Article
Save Article
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.)
Linger
15k23 gold badges52 silver badges79 bronze badges
asked Dec 8, 2009 at 19:06
Deniz ZoetemanDeniz Zoeteman
9,72126 gold badges70 silver badges98 bronze badges
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%
.
koen
5,4057 gold badges50 silver badges89 bronze badges
answered Dec 8, 2009 at 19:14
0
@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.
answered Dec 8, 2009 at 19:18
HelenHelen
88.2k17 gold badges248 silver badges314 bronze badges
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
answered Dec 9, 2009 at 1:33
ghostdog74ghostdog74
329k56 gold badges259 silver badges343 bronze badges
1
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.
Peter Oram
6,2532 gold badges28 silver badges40 bronze badges
answered Mar 3, 2011 at 21:17
2
Download Windows Speedup Tool to fix errors and make PC run faster
In this post, we will help you to perform Arithmetic operations in Command Prompt on Windows 11/10. Command Prompt window comes with a mini calculator that helps you perform division, addition, multiplication, and subtraction for two or more numbers. There is a very simple command for each operation.
Though Windows 11/10 also brings its Calculator app that provides a standard, programmer, scientific, and other types of calculator, for those who want to perform basic Math (or elementary arithmetic operations without decimal points) using Command Prompt, this post is helpful.
At first, you need to launch Command Prompt using the Windows Search box or Run command box. After that, you can execute the commands.
1] Addition
The command to do addition for two or more numbers is:
set /a num1+num2+num3
Replace num1, num2, etc., with actual numbers (like 5, 10, or something else) and press Enter. This will show the result.
Alternatively, you can execute the addition command like:
set /a result= num1+num2+num3
Again, replace num1, num2 values with actual numbers and it will show the addition result.
2] Division
For division operation, the command is:
set /a num1/num2
You can also perform multiplication and division operations together. The command would be:
set /a result=num1*num2/num3
Execute the command and it will provide the output.
3] Subtraction
The subtraction command is also very simple. You can perform it for two or more numbers. Here it is:
set /a num1-num2-num3
Add actual numbers and the result will be in front of you.
In addition to that, you can also perform subtraction with addition, multiplication, and/or division operations in one go. The command would be:
set /a num1+num2-num3*num4/num6
4] Multiplication
To perform multiplication using Command Prompt, the command is:
set /a num1*num2*num3
Alternatively, you can also execute this command like this:
set /a result= num1*num2
Multiplication can also be done with addition, subtraction, and division together. Just add numbers accordingly and get the result.
This is how you can do Arithmetic operations in Command Prompt.
Laxman has done Bachelor’s in Computer Science, followed by an MBA. Writing about Windows OS and the free software and services that are available for the Windows operating system is what excites him.