Board logo

标题: [加密解密] 批处理记录、修改自身密码 [打印本页]

作者: 随风    时间: 2008-4-18 01:14     标题: 批处理记录、修改自身密码

闲来无事,写了个可修改自身密码的批处理
特点:
     把批处理的密码乱序后记录在自身的第一行,增加 “安全性” 呵呵。。
  输入正确密码后,可以修改密码。新密码同样会被乱序后写在第一行。
  不产生临时文件,不导致文件无限扩大。
  1. ::246897531
  2. @echo off
  3. ::code 随风 @bbs.bathome.net   2008-04-17
  4. set /p code=<"%~0"
  5. set "code=%code:~2%"
  6. setlocal EnableDelayedExpansion
  7. call :lis "%code%"
  8. endlocal&set "code=%a%"
  9. set /a ci=3
  10. :ccc
  11. cls
  12. echo\&echo  你还有 %ci% 次机会
  13. echo\&echo  正确密码是:%code%
  14. echo\&set /p mm= 请输入密码:
  15. if /i "%mm%"=="%code%" goto ok
  16. set /a ci-=1
  17. if %ci% equ 0 (goto cuo) else goto ccc
  18. :ok
  19. cls&echo 密码正确
  20. echo\&echo 可直接输入新密码,直接按回车保留原密码
  21. set /p code=
  22. setlocal EnableDelayedExpansion
  23. call :loop "%code%"
  24. endlocal&set "code=%b%%a%"
  25. echo %code%
  26. goto xie
  27. :lis 将密码还原
  28. set a=!a!!code:~-1,1!
  29. set code=!code:~0,-1!
  30. if not defined code goto :eof
  31. set a=!a!!code:~0,1!
  32. set code=!code:~1!
  33. if defined code goto lis
  34. goto :eof
  35. :loop 将密码乱序
  36. set a=!code:~0,1!!a!
  37. set code=!code:~1!
  38. if not defined code goto :eof
  39. set b=!b!!code:~0,1!
  40. set code=!code:~1!
  41. if not defined code goto :eof
  42. goto loop
  43. :cuo
  44. cls&echo\&echo  密码连续输入错误,下次再试吧。。。
  45. echo\&echo  按任意键退出。。。
  46. echo\&pause>nul&exit
  47. :xie
  48. for /f "delims=" %%a in ('type "%~0"') do (
  49.   if not defined flag (
  50.     set flag=a
  51.     >"%~0" echo ::%code%
  52.   ) else >>"%~0" echo %%a
  53. )
复制代码

作者: 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

不懂有什么用处呢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2