中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 01:19
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理输入密码时怎么用"***"来显示? 查看 994 回复 9
楼 主 批处理输入密码时怎么用"***"来显示? 发表于 2008-09-30 21:05 ·  中国 江西 赣州 电信
初级用户
积分 78
发帖 30
注册 2008-03-02 23:27
18年会员
UID 111896
性别 男
状态 离线
批处理输入密码时怎么用"***"来显示?
2 发表于 2008-09-30 21:14 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
隐藏的会
***的不会
3 发表于 2008-09-30 22:20 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
EditV32.exe
http://www.westmesatech.com/editv.html
It can mask the typed input for simple password security.


[ Last edited by tireless on 2008-9-30 at 22:22 ]
4 发表于 2008-10-01 00:30 ·  中国 四川 成都 电信
中级用户
★★
积分 297
发帖 135
注册 2006-10-21 12:00
19年会员
UID 67627
性别 男
状态 离线
http://www.cn-dos.net/forum/viewthread.php?tid=29806
: by Herbert Kleebauer 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo hP1X500Pf3/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
5 Re 4楼 发表于 2008-10-01 11:27 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
我输入的时候不会有任何字符上屏,且光标出现在开头 Enter password:
6 发表于 2008-10-02 11:59 ·  中国 广东 广州 鹏博士宽带
初级用户
积分 31
发帖 9
注册 2008-09-05 11:56
17年会员
UID 124849
性别 男
状态 离线
参考了此贴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 == ( 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 ]
7 发表于 2008-10-02 16:16 ·  中国 广东 肇庆 电信
中级用户
★★
积分 206
发帖 103
注册 2008-05-06 16:59
18年会员
UID 117911
性别 男
来自 广东 肇庆
状态 离线

但如果输入密码时输错了,就得重新输入,因为不能退格和删除.
8 发表于 2008-10-02 20:09 ·  中国 贵州 黔西南布依族苗族自治州 兴义市 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
Originally posted by mgq at 2008-10-2 04:16 PM:

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

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

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

2、s为空,即BackSpace前没有字符供删除了:不做任何处理。
9 发表于 2008-10-03 10:40 ·  中国 广东 肇庆 电信
中级用户
★★
积分 206
发帖 103
注册 2008-05-06 16:59
18年会员
UID 117911
性别 男
来自 广东 肇庆
状态 离线
不明白,请楼上的写出代码.
10 发表于 2008-10-03 19:00 ·  中国 广东 广州 鹏博士宽带
初级用户
积分 31
发帖 9
注册 2008-09-05 11:56
17年会员
UID 124849
性别 男
状态 离线
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 == ( 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 == (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
论坛跳转: