用常规办法很难防特殊字符,不过对付万能密码其实只要从预处理机制下手就行了,想了三种方法,各有利弊,按实际需要酌情择用:
方法一:
- @echo off
- set /p cc=请输入密码
- for /f %%a in ("%cc%") do if "%%a"=="mima" (echo 正确) else echo 错误
- pause
- ::仍然存在1") do pause &的漏洞
复制代码
方法二:
- @echo off
- set /p=请输入密码=<nul
- more<con >tmp.tmp
- findstr "^mima$" tmp.tmp&&(echo 正确)||echo 错误
- pause
- ::输完密码还要ctrl+z结束
复制代码
方法三:
- @echo off&setlocal enabledelayedexpansion
- set str=1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- for %%a in (%str%) do (set /a n+=1)&set .!n!=%%a
- for %%a in (23 19 23 11) do (
- cls
- choice /c %str: =% /n /cs /m "请输入密码 !input!"
- set /a "true=true|(^!^!(%%a-!errorlevel!))"
- for %%z in (.!errorlevel!) do set input=!input!!%%z!
- )
- )
- cls&echo 请输入密码 %input%
- if "%true%"=="0" (echo 正确) else echo 错误
- pause&exit
- ::效率很低,而且不支持特殊字符
复制代码
[ 本帖最后由 zm900612 于 2011-2-7 14:01 编辑 ] |