Double If语句批量

时间:2018-01-04 14:21:29

标签: batch-file

我对StackOverflow比较陌生,所以我为我可能犯的任何错误道歉。 我正在批处理脚本中制作一个Fallout类型的技能系统,并且想法是你有一定数量的技能点可以分配,如果这个数字达到0,那么你就不能再分配技能点了。这是对我不起作用的部分:

if "%sdec%"=="5" (
if "skp"=="0" goto skperrors
set /a "skp=skp-5"
set /a "s=s+5"
)

sdec是此人输入的数字,表示他们想要分配的技能点数。 “if skp = 0”段仅分配给正整数,因为0会跳过该技能,任何负数都会减去,从而为他们提供更多的技能点数。在我脑海中,它会检查他们输入的是什么号码,然后检查他们是否有0个技能点。如果他们这样做,那么它会将它们重定向到错误消息。如果没有,它就过去了。但是当我运行代码时,它似乎跳过了它。对任何可以提供帮助的人都非常喜欢< 3

1 个答案:

答案 0 :(得分:1)

使用此代码:

if "%sdec%" == "5" (
    if "%skp%" == "0" goto skperrors
    set /A skp-=5
    set /A s+=5
)

您错过了环境变量skp名称周围的百分号,因此字符串"skp""0"进行了比较,当然这种情况永远不会相等。双引号也进行了比较。有关将字符串或整数与批处理文件中的命令 IF 进行比较的详细信息,请参阅Symbol equivalent to NEQ, LSS, GTR, etc. in Windows batch files上的答案。