2012-01-12 43 views
1

我需要一個用戶輸入密碼的批處理文件,如果它是正確的,它會映射驅動器。如果是錯誤的,那麼它需要回去開始在批處理文件中創建一個循環

我有這個

:start 
echo Username=**** 

SET /P password=Please enter the password 

IF %password%==password goto map 
IF %password%!==!password goto start 

:map 

NET USE Z: \\server\folder 

它的工作原理,如果輸入的密碼是正確的,但如果犯規是錯誤

任何幫助嗎?

回答

0

你不需要IF %password%!==!password goto start乾脆。如果密碼正確,則爲goto map,否則爲goto start。那就是如果你用goto start代替IF %password%!==!password goto start,你會得到你想要的。

2

這是因爲檢查

if %password%!==!password 

永遠是正確的。 if將兩個字符串與==的每一側進行比較。問問自己,條件是否能永遠是正確的;-)

你可能想

if %password%==password goto map 
goto start 

代替。 goto map跳過下一行,所以它不會被執行,如果條件不成立,它將返回到start

另一種選擇是

if %password%==password (goto map) else (goto start) 

這可能是習慣了結構化編程的程序員更加熟悉。謹慎的

一個字:通常應引用您的字符串進行檢查,以防止空間輸入:

if "%password%"=="password" ... 
+0

非常感謝,這是非常有幫助 – user1130264 2012-01-12 16:46:06

+1

更簡單但:如果%密碼%「neq」密碼「goto start」。否:需要地圖標籤。 – dbenham 2012-01-12 17:48:37

+0

的確如此。然而,這並不能真正幫助我,因爲接受了後面的問題,詳細說明了完全相同的內容。 – Joey 2012-01-12 21:16:00

0
@echo off 
color 02 
set num1=0 
set num2=1 
set terminator=5 
:loop 
set /a num1= %num1% + %num2% 
if %num1%==%terminator% goto close 
goto open 
:close 
echo %num1% 
pause 
exit 
:open 
echo %num1% 
goto loop 

試試這個代碼NUM1是遞增的數量和NUM2是添加到NUM1和終止值,其中NUM1將結束,你可以在這個聲明中指示終止不同的值(如果%NUM1%的價值==%terminator%goto close)這是布爾表達式goto close是進程如果布爾值爲true並且打開是進程如果布爾值爲false您只能瞭解這一點如果您是程序員

請投票如果您瞭解此代碼

將其保存爲擴展名爲.bat的文件名

+0

請不要要求投票。 – 2012-10-04 02:12:32