2014-01-23 77 views
0

找不到问题每当我只输入1,就会发生错误,它说(此时意外),但只要输入其他数字,只要它有2个小数的地方,也没关系。If语句(此时意外

@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

删除'@echo off'并观察输出 - 你会清楚地看到,是什么问题。 – Stephan

+0

我明白了。谢谢〜 出现错误,因为参数不完整。 –

+1

是的。为避免出现这种语法问题,请将等号的两边加上双引号:'if“%input%”==“0”('。这不会解决任何逻辑故障,但会使批处理语法错误崩溃因为如果%input%为空,则该行被转换为“if”“==”0“(而不是'if == 0(' – Stephan

回答

1

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

意味着如果[从input第四个字符的字符串1个字符] ==(

当输入是 “1”,[字符串从第一个input的第四个字符开始aracter]是空的,所以这被解释为

if ==. (

if声明预计if string1 operator string2 (dothis)

SI它认为==.作为字符串1,可以不知道是什么意思(作为经营者 - 它期待一个有限的集合之一;所以它抱怨(不是预期的。

治愈:

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