Batch file 如何批量使用set/a命令?它';这是一个非常简单的游戏和代码

Batch file 如何批量使用set/a命令?它';这是一个非常简单的游戏和代码,batch-file,Batch File,我正在尝试使用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 t

我正在尝试使用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
你写道:

if weapons=1 (
...
if weapons=0 (
这就是在cmd/batch中测试值的方式。
与大多数现代语言一样,平等性是通过
=
测试的
批处理还允许
eq

您还需要将变量包装在
%
中,否则您将根据一个数字测试字符串literal
“武器”

如果%wearms%==1(…)或如果%wearms%eq 1(…)

你能找出这些片段之间的区别吗

首先,语法
%varname%
用于访问变量的值。在第二天。。。将文字
武器
1
进行比较,或者如果您使用了正确的比较运算符(
==`or
eq`),则会将文字
武器
1
进行比较

cmd
试图理解
如果武器=1(
并且实际上非常满意
如果武器=1
——它决定这是一个字符串。然后它寻找一个比较运算符,但不理解
,因为这不是有效的比较运算符


如果要从命令提示符下运行批处理,而不是单击快捷方式,则
cmd
将显示一条错误消息。

不要使用
Set/p
,这会使您无法控制用户输入的可能性。当您只需要几个已知输入中的一个时,请改用
Choice
。打开命令提示符窗口(cmd.exe),然后输入
Choice/?
以读取其使用信息。另外
Set/a
用于算术,您不执行任何操作,因此请使用
Set“武器=1”
Set“衣服=0”但是,C、C++、C、Python、LUA、java都使用了<代码>=<代码>比较。你是正确的,我输入了代码> EQ<代码>,而不是<代码>“E> <代码>,忘记了<代码> %>代码>包装。我从未使用过<代码> = = /COD>作为任何语言中的比较运算符。但是,我从来没有用这些语言编写任何代码,EIT。建议我们马上处理掉这些评论。“我从来没有用这些语言写过任何代码”——这解释了很多。
if %adec1% == 2 (
set /a weapons=1
set /a clothing=0
goto poop
)


if weapons=1 (
echo Good job sir!
)