我正在制作一个基于rpg的文本,我在为一种特定的if声明而挣扎,我不愿意分享确切的代码,因为它包含了我在过去5年中所做的很多内容,我希望能得到一个版权。(为了澄清,我是关于我自己创作的艺术品、音乐和故事情节的)
守则的例子:
set choice=00
:top
cls
echo What would you like to do?
echo 1) gain 10 points
echo 2) do something else
set /p choice=Your Choice:
if %choice%==1 goto :options
if %choice%==2 goto :something-else
if %choice%==00 goto :end
:options
set /a opt1=10
set /a opt2=10
if %opt1%==%opt2%-5 goto :nxt
set /a opt1+=10
goto :top
:nxt
cls
echo You can't do that!
echo/
echo Press Enter to Continue
pause >nul
goto :top
:something-else
exit
:end
exit问题是,我的过程完全忽略了这个if语句。从我的角度来看,opt2-5应该=5,因此禁止尝试的操作,即将10添加到opt1,而不是跳过if并以任何方式添加10。到目前为止,这类方程在其他领域对我起了作用,我不明白为什么它现在不起作用。唯一的区别是其他代码完全定义了变量,例如: opt1=10 opt2=5,如果opt2=5随后回显,您就不能这样做。
发布于 2022-05-08 11:15:10
若要对批处理中的表达式执行比较,可以使用Set /A与设计为0的表达式一起计算为0,如果为false,则与&&或||条件运算符一起实现if else逻辑。
IE:
@Echo off
:l
Set /A A=5,B=2
Set /P "C=Value for C: "
2> nul Set /A "D=B+C","1/(A-D)" && (
Cmd /V:On /C "Echo(!A! ^!= !D!"
) || (
Cmd /V:On /C "Echo(!A! == !D!"
)
Goto:lhttps://stackoverflow.com/questions/72158106
复制相似问题