как сделать математические действия в bat среди переменных
как сделать математические действия в bat среди переменных. как вычесть переменную goblin_hp от hero_damage
set /a goblin_hp=4
set /a hero_damage=3
set /p answer=выбирай
if %answer%==1 %goblin_hp% - %hero_damage%
echo ты ударил гоблина и у него осталось %goblin_hp%
pause
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
В самом простом варианте вам нужно лишь присвоить вычисленное значение переменной:
if %answer%==1 set /a goblin_hp = %goblin_hp% - %hero_damage%
Но остальная часть кода (сообщение об остатке goblin_hp) будет выполняться независимо от того, ударили гоблина или нет. Можно сделать так:
@echo off
setlocal EnableDelayedExpansion
set /a goblin_hp=4
set /a hero_damage=3
set /p answer=Выбирай:
if %answer%==1 (
set /a goblin_hp = %goblin_hp% - %hero_damage%
echo Ты ударил гоблина и у него осталось !goblin_hp!
)
pause
Пояснения относительно setlocal EnableDelayedExpansion и !goblin_hp! - здесь.
Можно попроще, c goto:
@echo off
set /a goblin_hp=4
set /a hero_damage=3
set /p answer=Выбирай:
if %answer% NEQ 1 goto out
set /a goblin_hp = %goblin_hp% - %hero_damage%
echo Ты ударил гоблина и у него осталось %goblin_hp%
:out
pause
Автор решения: Urik
→ Ссылка
Проблема может быть в одеревеневшем трансляторе батников, его не правили лет 10 точно. Может поможет убирание пробелов:
set /a goblin_hp = %goblin_hp%-%hero_damage%