闲来无事,写了个可修改自身密码的批处理
特点:
把批处理的密码乱序后记录在自身的第一行,增加 “安全性” 呵呵。。
输入正确密码后,可以修改密码。新密码同样会被乱序后写在第一行。
不产生临时文件,不导致文件无限扩大。- ::246897531
- @echo off
- ::code 随风 @bbs.bathome.net 2008-04-17
- set /p code=<"%~0"
- set "code=%code:~2%"
- setlocal EnableDelayedExpansion
- call :lis "%code%"
- endlocal&set "code=%a%"
- set /a ci=3
- :ccc
- cls
- echo\&echo 你还有 %ci% 次机会
- echo\&echo 正确密码是:%code%
- echo\&set /p mm= 请输入密码:
- if /i "%mm%"=="%code%" goto ok
- set /a ci-=1
- if %ci% equ 0 (goto cuo) else goto ccc
- :ok
- cls&echo 密码正确
- echo\&echo 可直接输入新密码,直接按回车保留原密码
- set /p code=
- setlocal EnableDelayedExpansion
- call :loop "%code%"
- endlocal&set "code=%b%%a%"
- echo %code%
- goto xie
- :lis 将密码还原
- set a=!a!!code:~-1,1!
- set code=!code:~0,-1!
- if not defined code goto :eof
- set a=!a!!code:~0,1!
- set code=!code:~1!
- if defined code goto lis
- goto :eof
- :loop 将密码乱序
- set a=!code:~0,1!!a!
- set code=!code:~1!
- if not defined code goto :eof
- set b=!b!!code:~0,1!
- set code=!code:~1!
- if not defined code goto :eof
- goto loop
- :cuo
- cls&echo\&echo 密码连续输入错误,下次再试吧。。。
- echo\&echo 按任意键退出。。。
- echo\&pause>nul&exit
- :xie
- for /f "delims=" %%a in ('type "%~0"') do (
- if not defined flag (
- set flag=a
- >"%~0" echo ::%code%
- ) else >>"%~0" echo %%a
- )
复制代码
|