批处理之家's Archiver

wxcute 发表于 2008-11-10 18:28

[ 新手练习 3 ] 批处理简易密码登录

要求:首先设定一个密码如:123;
   然后等待输入密码;
   最后判断输入正确与否并显示提示,如密码正确显示:登录成功,错误则显示:密码不对。

目的:掌握 set /p 和 if 用法

评分:答对有分,第一个最高;答错不扣分;复制代码者扣分。

命令不熟悉可参考:
if 命令示例详解
[url=http://bbs.bathome.net/thread-55-1-1.html]http://bbs.bathome.net/thread-55-1-1.html[/url]
set命令入门训练
[url=http://bbs.bathome.net/thread-461-1-1.html]http://bbs.bathome.net/thread-461-1-1.html[/url]
[quote]
上一题:[ 新手习题 2 ] 字符替换
[url=http://bbs.bathome.net/thread-2462-1-1.html]http://bbs.bathome.net/thread-2462-1-1.html[/url]
下一题:[ 新手习题 4 ] 循环十秒倒计时
[url=http://bbs.bathome.net/thread-2494-1-1.html]http://bbs.bathome.net/thread-2494-1-1.html[/url]
[/quote]

[[i] 本帖最后由 wxcute 于 2008-11-17 11:33 编辑 [/i]]

BBCC 发表于 2008-11-10 19:17

[code]@echo off
set varPass=123&set /p varEnter=输入密码
if "%varEnter%" equ "%varPass%" ( echo OK ) else ( echo No pass! )
pause[/code]

[[i] 本帖最后由 BBCC 于 2008-11-10 20:25 编辑 [/i]]

hlzj88 发表于 2008-11-10 19:28

set "var=123"
set /p "sss="请输入密码
if /i %sss% equ %var%&&echo 登录成功 || 密码不对
pause
试过了不对的,pause暂停不住,写到这里希望楼主能给斧正一下,问题所在

BBCC 发表于 2008-11-10 19:31

[color=red]| 密码不对[/color]
改改这里看看?

pusofalse 发表于 2008-11-10 19:35

回复 3楼 的帖子

if /i %sss% equ %var%&&echo 登录成功 || 密码不对
你的代码实际执行到这句时就已经出错退出了。

if 的句式是:
if 条件 (条件成立要执行的命令) else (条件不成立时要执行的命令)
当然也可以用&&和||判断,但不会是你所写的那样。。。
另,当用户输入空值时也会出错。。。。 一个完整的参数要用""闭合。

pusofalse 发表于 2008-11-10 19:38

回复 2楼 的帖子

建议重新编辑一下,出现了杂乱的代码。。。
另,pause命令不管真假总是要执行的,所以可以全部去掉放在下面。。。

BBCC 发表于 2008-11-10 20:25

真奇怪,再编辑里没有看见乱码...

wxcute 发表于 2008-11-10 20:31

回复 3 楼

set /p "sss="请输入密码
if /i %sss% equ %var%&&echo 登录成功 || 密码不对

一、set/p 引号滥用;
二、if 语句用法错误,请看顶楼参考部分。

hlzj88 发表于 2008-11-10 20:41

[code]set "var=123"
set /p sss=请输入密码
if "%sss%" equ "%var%" (echo 登录成功) else (echo 密码不对)
pause[/code]谢谢楼主,刚才管小孩学习,

set/p 引号滥用   不明白
上面的帖子是如何框起来的?

谢下面11楼

[[i] 本帖最后由 hlzj88 于 2008-11-10 21:30 编辑 [/i]]

Batcher 发表于 2008-11-10 20:57

回复 9楼 的帖子

Q: 如何用code把代码扩起来?
A: [url]http://bbs.bathome.net/thread-404-1-1.html[/url]

pusofalse 发表于 2008-11-10 21:02

回复 9楼 的帖子

应该是半角的引号""  非全角“

jellyhk 发表于 2008-11-11 00:26

[code]set pass=
set pass=123&set /p pass=
if "%pass%"=="123" (echo 登陆成功
) else (
echo 失败)
pause[/code]

nomyself 发表于 2008-11-11 19:31

[code]@echo off
set a=123
set /p b=请输入你的密码:
if "%b%" equ "%a%" (echo wellcome! ) else (echo warring, password is erron!)
pause[/code]

qingfengzhixia 发表于 2008-11-12 14:10

[code]@echo off
set psw=123
set /p var=请输入密码:
if %var%==%psw% (echo 登录成功) else (echo 密码不对)
pause >nul[/code]

chengyuan383 发表于 2008-11-12 18:26

[code]@echo off
set a=123
set /p b=请在此输入密码:
if "%a%" equ "%b%" (echo 登陆成功) else (echo 密码错误)
pause[/code]

akiraakito 发表于 2008-11-14 20:42

[code]@echo off
set psw=123
set /p input=enter password:
if %input%==%psw% (echo right!) else (echo error!)
pause>nul[/code]

sd6733531 发表于 2008-11-16 08:28

[code]@echo off
echo -----------登陆器--------
set password=123
echo 请输入密码:
set /p mypassword=
::echo %mypassword%
if %mypassword% ==%password% (echo 密码正确) else echo 密码不对
pause>nul

请楼主指示代码的问题。。[/code]

[[i] 本帖最后由 sd6733531 于 2008-11-16 08:29 编辑 [/i]]

wxcute 发表于 2008-11-16 19:08

回复 17楼 的帖子

要说问题嘛,就是直接回车时会出错。
因为直接回车时%mypassword%是空的,即未定义,执行到 if 这句时就出错。

要改就加个引号:
if "%mypassword%" =="%password%"

stalker 发表于 2008-11-18 11:06

看看我的=_=
[code]@echo off
set /a flag=0
:again
if %flag% equ 3 echo "Malicious user!!!"&goto end
set /p szEnter="请输入密码:"
set /a flag = %flag% + 1
if "%szEnter%" == "bathome" echo "Welcome!My master!"&goto end
echo "密码错误!"
goto again
:end
pause>nul
exit
[/code]

[[i] 本帖最后由 stalker 于 2008-11-18 12:04 编辑 [/i]]

zzytyy1023 发表于 2008-11-18 13:22

@echo off
set password=123
set /p var=please input password:
if %var% equ %password% (echo pass!) else (echo wrong!)
pause

h5599859 发表于 2008-11-25 15:01

@echo off
:kl
set /p b=请输入
if %b% equ 123 echo 密码输入正确
if not %b% equ 123 echo 密码输入错误请重新输入&ping -n 2 127.1>nul&cls&goto kl
pause

firewolf85 发表于 2008-12-7 17:38

[code]@echo off
set mm=1234
:loop
set /p var=请输入密码
cls
if %var%==%mm% (
echo 密码正确
) else (
echo 密码错误,请重新输入
goto loop
)
pause>nul[/code]批处理安全性太差了,似乎不适合干这工作吧。

[[i] 本帖最后由 firewolf85 于 2008-12-7 17:42 编辑 [/i]]

qqha001 发表于 2008-12-12 10:38

[code]@echo off
set a=123
set /p b=请输入密码:
if %b%==%a% (echo 密码正确) else (echo 密码错误)
pause[/code]

怎么弄成 代码 的样子呢?谢谢

[[i] 本帖最后由 qqha001 于 2008-12-12 11:29 编辑 [/i]]

steven007 发表于 2008-12-19 09:46

@echo off
color 1a &mode con cols=25 lines=10
set num=101
echo.
set /p a=  请输入密码:
if %a%==%num% (echo   登录成功) else (echo   密码不对)
echo   任意键退出!
pause>nul

steven007 发表于 2008-12-19 10:06

限制最多尝试登录次数为3的密码检验登录:
@echo off
title Edit By steven007
color 1a &mode con cols=35 lines=10
echo ------------密码检验--------------
set i=3
:loop
set num=101
echo.
set /p a=   请输入密码:
if %a%==%num% (echo    登录成功) else (echo    密码不对 )
set /a i=%i%-1
if %i%==0 goto exit
echo    你还可以尝试%i%次!
goto loop
:exit
echo    累计三次输入错误,任意键退出!
pause>nul

steven007 发表于 2008-12-19 10:20

楼上的代码在登录成功的情况下还继续执行loop循环,更新代码如下:
@echo off
title Edit By steven007
color 1a &mode con cols=35 lines=10
echo ------------密码检验--------------
set i=3
:loop
set num=101
echo.
set /p a=   请输入密码:
if %a%==%num% (echo    登录成功&goto right) else (echo    密码不对 )
set /a i=i-1
if %i%==0 goto exit
echo    你还可以尝试%i%次!
goto loop
:exit
echo    累计三次输入错误,任意键退出!
pause>nul
:right
pause>nul

RiceFans 发表于 2008-12-22 23:04

代码如下:
@echo off
:start
set /p psw=请输入密码(三位):
if "%psw%" equ "123" (echo pass!) else (echo wrong,please input again!)
goto start

疑问:
1.如果先键入123,显示 pass,同时再跳到请输入密码:,此时我直接回车,也显示pass  (显然这是很危险的。)
2.所以如何屏蔽这种情况呢?  多谢指点!

RiceFans 发表于 2008-12-22 23:07

@echo off
:start
set /p psw=请输入密码(三位):
if "%psw%" equ "123" (echo pass!) else (echo wrong,please input again!)
set "psw="
goto start

哈哈,不好意思,解决好了。来出来和大家分享一下。
让psw的变量置空值就行,可以规避以上问题。

RiceFans 发表于 2008-12-23 12:11

引用wxcute 话:
在标签:start下加句[code]set psw=[code]就可以了,另:标签最好不用保留字,加个线_start或用其他如begin好些

谢谢。成功验证你的话!下次避免出现保留字,多谢提醒。同时让我明白了,原来前面加下划线的意义了。

xiong8707 发表于 2008-12-27 12:49

这个是原创的,一个帖一个帖看下来没看到重复的!

@echo off
:kaishi
set /p a=要使用本程序需要先输入密码:
if "%a%"=="214968959" goto zhengque
echo 输入错误
pause>nul
goto kaishi
:zhengque
echo 输入正确
pause>nul

页: [1] 2 3 4 5 6 7 8

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.