批处理之家's Archiver

随风 发表于 2008-4-18 01:14

批处理记录、修改自身密码

闲来无事,写了个可修改自身密码的批处理
特点:
     把批处理的密码乱序后记录在自身的第一行,增加 “安全性” 呵呵。。
  输入正确密码后,可以修改密码。新密码同样会被乱序后写在第一行。
  不产生临时文件,不导致文件无限扩大。[code]::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
)[/code]

acer 发表于 2008-4-18 10:35

积极学习中..........

fml520 发表于 2008-4-18 21:36

牛啊
嘘唏
学习了。能不能解释每行的代码含义啊。

garyng 发表于 2011-9-1 21:17

“%~0”学习了~

狱渊 发表于 2013-5-1 10:51

貌似我还是不太明白

love303929545 发表于 2018-9-17 16:51

不懂有什么用处呢

页: [1]

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