批量如果变量小于变量不起作用

时间:2017-10-05 14:45:29

标签: batch-file if-statement

我做错了什么或为什么这不起作用?我对批次很新。它说"命令的语法不正确。"

if %nm1% lss %nm2% (
    echo    voitit:%voitat%
    set /p "tupla=Voitonmaksu.1 tuplaus.2 (1/2)."
)
if %nm1%==%nm2% (
    set /a voitat=%voitat% / 2
    echo    voitit:%voitat%
    set /a voitot=%voitot% + %voitat%
    pause
    goto peli
)
if %nm2% lss %nm1%(
    echo    voitit:0
    pause
    goto peli
)
if %tupla%==1 (
    set /a voitot=%voitot% + %voitat%
    pause
    goto peli
)
if %tupla%==2 goto tuplaus

1 个答案:

答案 0 :(得分:3)

set /a voitat=%voitat% / 2
set /a voitot=%voitot% + %voitat%

这些命令由于delayedexpansion而无法按预期工作(许多SO文章都在这上面 - 使用顶部栏中的search工具)

,因为您正在使用set/a - 语法允许表达变量"裸体" - 没有%分隔符,当delayedexpansion怪癖变得无关紧要时(但无论如何你应该阅读它 - 以避免不可避免的后续问题。)

if %nm2% lss %nm1%(

%nm1%(

之间必须有空格

如果任一参数是非数字的(可能不是,给定它们的名字),那么参数必须是"引用" (适用于任何 if,其中参数可能包含空格)