在批处理文件中创建循环

时间:2012-01-12 16:36:37

标签: batch-file

我需要一个用户输入密码的批处理文件,如果它是正确的,它会映射一个驱动器。如果它是错的,那么它需要回到起点

我有这个

: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

如果输入的密码正确,则无效,但如果输入的密码错误则无效

任何帮助?

3 个答案:

答案 0 :(得分:2)

那是因为检查

if %password%!==!password

永远不会是真的。 if将两个字符串与==的每一侧进行比较。问问自己这种情况是否真实; - )

你可能想要

if %password%==password goto map
goto start

代替。 goto map会跳过下一行,因此不会执行该行,如果条件为false,则会返回start

另一种选择是

if %password%==password (goto map) else (goto start)
对于习惯于结构化编程的程序员来说,这可能更为熟悉。

提醒一句:您通常应该引用要检查的字符串以防止输入中的空格:

if "%password%"=="password" ...

答案 1 :(得分:0)

您完全不需要IF %password%!==!password goto start。如果密码正常,则为goto map,否则为goto start。也就是说,如果您将IF %password%!==!password goto start替换为goto start,您将获得所需内容。

答案 2 :(得分: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%==%终止符%goto close)这是布尔表达式goto close是进程,如果boolean为true,如果boolean为false,则goto open是进程,如果你是程序员,你只能理解这个过程

如果你理解这些代码,请投票

将其保存为扩展名为.bat的文件名