Как использовать команды set / a в Batch?Это очень простая игра и код - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь использовать команды set / a для установки значения различных переменных, которые будут отображаться позже в этой игре.Тем не менее, я попытался написать код несколькими различными способами, но cmd просто закрывается после каждой попытки.Что я делаю не так?

:a1-2
cls

echo FINANCIAL MEETING
echo.
echo Secretary of Treasury: Commander %name%! You're here just in time!
echo.
echo We need to cut funding to the military in order to more more evenly
echo.
echo spread out our recources. What would you prefer we cut from?
echo.
echo 1) Weapons
echo.
echo 2) Clothing
echo.
echo 3) Housing
echo.
echo 4) You DARE cut from MY TROOPS?!!
echo.
set /p adec1=

if %adec1% == 1 (
set /a weapons=0
set /a clothing=1
goto poop
)
if %adec1% == 2 (
set /a weapons=1
set /a clothing=0
goto poop
)

:poop
cls

if weapons=1 (
echo Good job sir!
)
if weapons=0 (
echo Oh no!
)
pause

Ответы [ 2 ]

0 голосов
/ 07 мая 2019
if %adec1% == 2 (
set /a weapons=1
set /a clothing=0
goto poop
)


if weapons=1 (
echo Good job sir!
)

Можете ли вы определить разницу между этими фрагментами?

В первом синтаксис %varname% используется для доступа к значению переменной. Во втором ... литерал weapons сравнивается с 1 - или если бы вы использовали правильный оператор сравнения (==`` or equ`)

cmd пытается понять смысл if weapons=1 ( и на самом деле вполне доволен if weapons=1 - то есть он решает, что это строка. Затем он ищет оператор сравнения и не понимает (, поскольку это недопустимый оператор сравнения.

Если вы запустите пакет из командной строки, а не нажмете ярлык, то cmd ответит взаимностью, показывая вам сообщение об ошибке.

0 голосов
/ 07 мая 2019

Вы писали:

if weapons=1 (
...
if weapons=0 (

То есть не как вы проверяете значение в cmd / batch.
Как и в большинстве современных языков, равенствопротестировано с ==.
Пакет также позволяет equ.

Вам также нужно заключить переменную в %, в противном случае вы проверяете строковый литерал "weapons" против числа.

Вы хотите либо if %weapons%==1 (...), либо if %weapons% equ 1 (...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...