中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理输入密码时怎么用"***"来显示?
作者:
标题: 批处理输入密码时怎么用"***"来显示? 上一主题 | 下一主题
paradiseapple
初级用户





积分 78
发帖 30
注册 2008-3-2
状态 离线
『楼 主』:  批处理输入密码时怎么用"***"来显示?

批处理输入密码时怎么用"***"来显示?

2008-9-30 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 2 楼』:  

隐藏的会
***的不会



2008-9-30 21:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  

EditV32.exe
http://www.westmesatech.com/editv.html

  Quote:
It can mask the typed input for simple password security.

[ Last edited by tireless on 2008-9-30 at 22:22 ]

2008-9-30 22:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 4 楼』:  

http://www.cn-dos.net/forum/viewthread.php?tid=29806
: by Herbert Kleebauer
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
set /p password=Enter password:<nul
for /f "tokens=*" %%i in ('in.com') do set password=%%i
pause
del in.com
echo.
echo The Password is:"%password%"
pause




hh.exe ntcmds.chm::/ntcmds.htm
2008-10-1 00:30
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 5 楼』:  Re 4楼

我输入的时候不会有任何字符上屏,且光标出现在开头 Enter password:

2008-10-1 11:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xahstar
初级用户





积分 31
发帖 9
注册 2008-9-5
状态 离线
『第 6 楼』:  

参考了此贴7楼的代码 http://www.cn-dos.net/forum/viewthread.php?tid=27149
以下代码只支持数字密码,还请高手完善一下。
@echo off && setlocal && cls
chcp 437 >nul
graftabl 936 >nul

:C

echo exit|cmd/kprompt $_e 100 CD 16 B4 4C CD 21$_g$_|debug>nul

if [%errorlevel%]==[13] ( goto :A ) else ( goto :B )
:A
        ::  按回车符到这里执行
      set psd=123
      if  not %psd%==%s% (
         echo.
         echo 密码错误!请重新输入。
         set s=
         goto :C
       ) else (
          echo.
          echo 密码正确!
          goto :D
         )   
:B
       set /a d=%errorlevel%-48>nul
       set s=%s%%d%
       set /p a=*<nul
       goto :C
:D   
       pause
[ Last edited by xahstar on 2008-10-2 at 12:00 ]

2008-10-2 11:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mgq
中级用户





积分 206
发帖 103
注册 2008-5-6
来自 广东 肇庆
状态 离线
『第 7 楼』:  


但如果输入密码时输错了,就得重新输入,因为不能退格和删除.

2008-10-2 16:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by mgq at 2008-10-2 04:16 PM:

但如果输入密码时输错了,就得重新输入,因为不能退格和删除.

在:B部分修改一下即可:

判断是BackSpace的话:
1、s不为空,即BackSpace前还有字符供删除:用set /p来输出一个退格和空格;同时s取上个s的除最后一个字符外的其余部分。

2、s为空,即BackSpace前没有字符供删除了:不做任何处理。

2008-10-2 20:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mgq
中级用户





积分 206
发帖 103
注册 2008-5-6
来自 广东 肇庆
状态 离线
『第 9 楼』:  

不明白,请楼上的写出代码.

2008-10-3 10:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xahstar
初级用户





积分 31
发帖 9
注册 2008-9-5
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by mgq at 2008-10-3 10:40 AM:
不明白,请楼上的写出代码.


@echo off && setlocal && cls
chcp 437 >nul
graftabl 936 >nul

:C

echo exit|cmd/kprompt $_e 100 CD 16 B4 4C CD 21$_g$_|debug>nul

if [%errorlevel%]==[13] ( goto :A ) else ( goto :B )
:A
        ::  按回车符到这里执行
   
      set psd=123
      if  not %psd%==%s% (
         echo.
         echo 密码错误!请重新输入。
         set s=
         goto :C
       ) else (
          echo.
          echo 密码正确!
          goto :D
         )   
:B      
       set /a d=%errorlevel%-48>nul
       if %d%==-40 (
          if  [%s%]==[] (goto :C) else (   
              set /p d=<nul
              set /p d= <nul
              set /p d=<nul
              set s=%s:~0,-1%
              goto :C
           )
       )
       set s=%s%%d%
       set /p a=*<nul
       goto :C
:D   
       pause


2008-10-3 19:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: