2014-01-23 119 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%"=="." (