批处理输入密码时怎么用"***"来显示?
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
It can mask the typed input for simple password security.
: 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
@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
Originally posted by mgq at 2008-10-2 04:16 PM:
顶
但如果输入密码时输错了,就得重新输入,因为不能退格和删除.
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