Variables 询问一个变量是否等于批处理中的另一个变量时出现语法错误

Variables 询问一个变量是否等于批处理中的另一个变量时出现语法错误,variables,if-statement,batch-file,syntax,equals,Variables,If Statement,Batch File,Syntax,Equals,这是我的密码: if %magic%==%weakness% set /a damage=%random%*3/32767+12 if %magic==%resistance% set /a damage=%random%*3/32767+5 echo Your attack does %damage% damage. 当我运行这个程序时,我总是遇到语法错误。我做错了什么?您应该始终在变量周围使用引号或使用延迟展开,以避免一个或两个变量都为空时出现问题 顺便说一句,在第二行你错过了百分之一 i

这是我的密码:

if %magic%==%weakness% set /a damage=%random%*3/32767+12
if %magic==%resistance% set /a damage=%random%*3/32767+5
echo Your attack does %damage% damage.

当我运行这个程序时,我总是遇到语法错误。我做错了什么?

您应该始终在变量周围使用引号或使用延迟展开,以避免一个或两个变量都为空时出现问题

顺便说一句,在第二行你错过了百分之一

if "%magic%"=="%weakness%" set /a damage=%random%*3/32767+12
if "%magic%"=="%resistance%" set /a damage=%random%*3/32767+5
echo Your attack does %damage% damage.
或者延迟扩张

setlocal EnableDelayedExpansion
if !magic!==!weakness! set /a damage=%random%*3/32767+12
if !magic!==!resistance! set /a damage=%random%*3/32767+5
echo Your attack does !damage! damage.

我也在12和第二个if之间按了回车键,但当我把它粘贴到这个论坛上时,它看起来只是一个空格,所以这不是问题。也在损坏之间。停下来