2012-01-12 100 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