2012-10-03 77 views

回答

9

現有INPUTDTO值可能應該被清除,因爲SET/P將保留現有的值,如果用戶不輸入任何內容結束。

@echo off 
set "INPUTDTO=" 
:INPUT 
SET /P INPUTDTO=Enter the DTO: 
if "%INPUTDTO:~-3%" neq "DTO" (
    ECHO ERROR: Please enter a valid DTO. 
    goto INPUT 
) 

/I開關,如果你想比較是不區分大小寫加入IF語句。

+0

感謝很多db​​enham :) – ams2705

+0

爲什麼在'設置「INPUTDTO =」引號'需要的?謝謝。 – Sabuncu

+1

@Sabuncu - 當格式化如我所知,變量名稱前面的開頭引號時,則最後一個引號之後的任何文本都將被忽略。它可以防止無意的空白被包含在作業中。如果線路結束,它不需要,但是一個很好的安全警衛。 – dbenham

1

邏輯很簡單,首先從原始字符串中刪除任何出現的「DTO」並將其存儲到另一個變量中。然後將其與原始INTPUTDTO變量相比較,在最後添加「DTO」。

:INPUT 
SET /P INPUTDTO=Enter the DTO: 
SET NEWINPUTDTO=%INPUTDTO:DTO=% 

IF "%INPUTDTO%"=="" (
     IF NOT "%NEWINPUTDTO%DTO"=="%INPUTDTO%" (
      GOTO NODTO 
    ) 
) 

:NODTO 
ECHO ERROR: Please enter a valid DTO. 
GOTO INPUT 

另外,如果你不關心腳本的複雜性,就用這樣的:

IF NOT "%INPUTDTO:DTO=%DTO"=="%INPUTDTO%" 
0

如果您願意使用其他軟件,則可以使用GnuWin32中的grep。這將設置你回來1.5MB

@echo off 
:INPUT 
SET /P INPUTDTO=Enter the DTO: 


echo %INPUTDTO% | grep .*DTO\b 

IF %ERRORLEVEL%==1 (
goto NODTO 
) 
goto:eof 
:NODTO 
ECHO ERROR: Please enter a valid DTO. 
GOTO INPUT 
相關問題