如何检测批处理文件中的无效用户输入?

时间:2013-11-10 03:18:50

标签: batch-file

我想使用批处理文件要求输入密码,我的代码非常简单。

@echo off
:Begin
cls
echo.
echo Enter Password
set /p pass=
if %pass%==Password goto Start 

:Start
cls
echo What would you like me to do? (Date/Chrome/Lock/Shutdown/Close)
set /p task=
if %task%==Date goto Task=Date
if %task%==Chrome goto Task=Chrome
if %task%==Lock goto Task=Lock
if %task%==Shutdown goto Task=Shutdown
if %task%==Close goto Task=Close

我需要检测用户输入无效密码的时间,我花了一个小时研究,但我一无所获。我没有任何进步,所以尽量保持它像上面的代码一样简单。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

非常简单!你错过了一行代码!

@echo off
cls
:Begin
echo.
echo Enter Password
set /p pass=
if %pass%==Password goto Start 
cls
Echo %pass% is not the PASSWORD
goto :Begin

:Start
cls
echo What would you like me to do? (Date/Chrome/Lock/Shutdown/Close)
set /p task=
if %task%==Date goto Task=Date
if %task%==Chrome goto Task=Chrome
if %task%==Lock goto Task=Lock
if %task%==Shutdown goto Task=Shutdown
if %task%==Close goto Task=Close

如果密码无效,代码将继续到下一行,现在是goto :Begin。这将重新启动序列。我稍微改变了顺序,以便屏幕也被清除,并且打印出错误。

莫纳

答案 1 :(得分:-1)

类似于Monacraft's answer,但使用if-else语句:

@echo off
cls
:Begin
echo.
echo Enter Password
set /p pass=
if %pass%==Password (goto Start) else *echo Invalid password. && goto :Begin)

:Start
cls
echo What would you like me to do? (Date/Chrome/Lock/Shutdown/Close)
set /p task=
if %task%==Date goto Task=Date
if %task%==Chrome goto Task=Chrome
if %task%==Lock goto Task=Lock
if %task%==Shutdown goto Task=Shutdown
if %task%==Close goto Task=Close

它的作用是检查密码是否正确。如果输入的密码不正确,则会显示一条错误消息,并返回到:Begin,从而重新启动序列。