找不到问题。每当我输入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
答案 0 :(得分:1)
if %input:~-3,1%==. (
表示[来自input
的第四个字符的字符串为1个字符] ==。 (
当输入为“1”时,[来自input
的第四个字符的字符串为1个字符]为空,因此将其解释为
if ==. (
if
语句需要if string1 operator string2 (dothis)
它将==.
视为string1,并且无法解决(
作为运算符的含义 - 它期待一个有限的集合;所以它抱怨(
没有被期待。
固化:
if "%input:~-3,1%"=="." (