如果声明(此时意外

时间:2014-01-23 17:01:01

标签: batch-file if-statement

找不到问题。每当我输入1时,就会发生错误。它说(此时出乎意料。但是每当我输入其他数字时,只要它有2位小数,就没关系。

@echo off
cls
    setlocal EnableDelayedExpansion
    echo|set /p= Input: 
    set /p input=
    call :process
    endlocal
    goto :EOF

:process
if %input%==0 (
    echo Input is 0
    goto :EOF
)

if %input:~-3,1%==. (
    if %input:~0,-3%==0 (
        echo Less than 1
    ) else (
        echo Greater than 1
    )
) else (
    echo Equal to 1
)
goto :EOF

1 个答案:

答案 0 :(得分:1)

if %input:~-3,1%==. (

表示[来自input的第四个字符的字符串为1个字符] ==。 (

当输入为“1”时,[来自input的第四个字符的字符串为1个字符]为空,因此将其解释为

if ==. (

if语句需要if string1 operator string2 (dothis)

它将==.视为string1,并且无法解决(作为运算符的含义 - 它期待一个有限的集合;所以它抱怨(没有被期待。

固化:

if "%input:~-3,1%"=="." (