2013-11-10 91 views
0

我想使用批處理文件來要求密碼繼續,我有非常簡單的代碼可以工作。如何檢測批處理文件中的無效用戶輸入?

@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 

我需要檢測用戶輸入無效密碼時,我花了一個小時研究,但我什麼也沒找到。我沒有以任何方式進步,所以試着像上面的代碼一樣保持簡單。

請幫幫我。

+0

批量標籤只是地標。他們不像Delphi或C那樣「結束一個過程」。就像彙編程序一樣,批量只是收費,所以在你的代碼中,無論密碼是否匹配,都會觸發標籤「Start」。其他記者的回覆也是有效的。最好把它們組合起來。 – Magoo

回答

0

非常簡單!你錯過了一行代碼!

@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。這將重新開始序列。我改變了一下的順序,以便屏幕也被清除,錯誤被打印出來。

Mona

+0

非常感謝你 – user2975367

+0

當我輸入錯誤的密碼時,它會回到:開始但它不回顯錯誤信息。 – user2975367

+0

在開始的'CLS'清除屏幕,所以你沒有看到消息。您可以在回聲後刪除它或插入「暫停」命令。還可以考慮在'if「中使用引號%pass%」==「密碼」goto Start「,這樣可以避免輸入空白或輸入兩個單詞時出現問題。 – foxidrive

相關問題