if '%class%'=='Mage' set basehealth=100 & set basemana=200 & set health=100 & set mana=200 & set speed=30 & goto cm
if '%class%'=='Warrior' set basehealth=200 & set basemana=50 & set health=200 & set mana=50 & set speed=20 & goto cw
if '%class%'=='Paladin' set basehealth=150 & set basemana=150 & set health=150 & set mana=150 & set speed=25 & goto cp
当我选择mage
并进入此部分时,它会说' ==' Mage'这时出人意料......
这是我设置%class%...
的地方我不知道问题是什么,因为它早先工作了......而且我对批处理也很新。
set /p descisionm=
if '%descisionm%'=='1' set class=Mage & goto mageline
if '%descisionm%'=='2' goto classchoose
答案 0 :(得分:1)
这几乎肯定是包含尾随空格的class
值的结果。 IF命令终止第一个空格处的值表达式,然后期望下一个非空格文本为==
,但会找到'
。
您可以通过用双引号而不是单引号括起两边来防止语法错误,这允许值包含空格。但由于"Mage "
不等于"Mage"
,您仍然无法获得正确的结果。
在定义变量时避免尾随空格的最佳方法是将整个赋值括在双引号内。最后一次引用后的所有内容都会被忽略。
set "class=Mage" & rem the trailing spaces are not included in the value :-)
另一个提示 - 您可以使用单个SET / A命令有效地将许多数字赋值串在一起,并且在使用SET / A时会忽略空格:
set /a basehealth=100, basemana=200, health=100, mana=200, speed=30 & goto cm