批量游戏中缺少操作员错误

时间:2016-07-08 09:05:36

标签: batch-file

:teattack1
set /a health-=!monsterdmg! # It said missing operator here
pause
set /a monsterhealth-=!playerdmg! # And Here
pause
if "!monsterhealth!" == lss 0 goto tewin
pause
goto testencounter
pause
goto encountermenu

我一直在找失踪的操作员

我提供了如何修复它,但没有找到任何东西

2 个答案:

答案 0 :(得分:1)

您需要添加:

Setlocal EnableDelayedExpansion

到您的脚本以允许使用! Check here概述了这一点及其所需的原因

答案 1 :(得分:0)

打开命令提示符窗口,输入set /?并仔细阅读所有输出帮助页面。

说明当使用 set 作为算术表达式,即set /A时,可以直接指定变量名而不进行扩展。 Windows命令处理器自动将每个不是数字的字符串或操作符解释为变量的名称,并在评估算术表达式时访问当前变量值。

接下来在命令提示符窗口if /?中运行,并仔细阅读所有输出帮助页面。

该行

if "!monsterhealth!" == lss 0 goto tewin

肯定无效,因为它包含运算符==和运算符lss,当然这不能正常工作。

这个改进的代码修复了所有编码错误。

:teattack1
set /a health-=monsterdmg
pause
set /a monsterhealth-=playerdmg
pause
if %monsterhealth% LEQ 0 goto tewin
pause
goto testencounter
pause
goto encountermenu

但是,环境变量healthmonsterdmgmonsterhealthplayerdmg都应该存在且指定了整数值,否则Windows命令解释程序将使用值{{1对于每个变量,使代码不是真正有用。