设为主页 | 加入收藏 | 繁體中文

bat过滤任意字符


  set/p password=
  set |findstr "ph4nt0m"
  if "%errorlevel%"=="0" echo 口令精确&goto end
  echo 口令错误&goto allyesno
  :end
  echo 你乐成登录系统
  实行效果如下
  Codz:
  请输入登录口令
  test
  口令错误
  请输入登录口令
  "
  口令错误
  请输入登录口令
  ph4nt0m
  password=ph4nt0m
  口令精确
  你乐成登录系统
  C:\test>
  程序进一步的完美了
  但是还是有题目D 我们再来看 换一种方法实行
  Codz:
  请输入登录口令
  test
  口令错误
  请输入登录口令
  ph4nt0mallyesno
  password=ph4nt0mallyesno
  口令精确
  你乐成登录系统
  C:test>
  由于程序的验证方法是 set |findstr "ph4nt0m" 所以只要包罗ph4nt0m字符的 密码 都被当成精确密码 所以密码ph4nt0mallyesno 也经过了
  为了制止这个题目 我设置了 立室参数\<\> 对数据进行查验 修正后的程序 如下
  Codz:
  @echo off
  cls
  :allyesno
  set errorlevel=>nul
  echo 请输入登录口令
  set/p password=
  set |findstr "\"
  if "%errorlevel%"=="0" echo 口令精确&goto end
  echo 口令错误&goto allyesno
  :end
  echo 你乐成登录系统
  实行效果
  Codz:
  请输入登录口令
  test
  口令错误
  请输入登录口令
  ph4nt0mallyesno
  口令错误
  请输入登录口令
  ph4nt0m
  password=ph4nt0m
  口令精确
  你乐成登录系统
  C:test>
  末了再将程序 修整 如下
  Codz:
  @echo off
  cls
  :allyesno
  set errorlevel=>nul
  echo 请输入登录口令
  set/p password=
  rem 如果密码字符串包罗此行任一字符~`!@#$%^&*()_+|-=[]{};':,./<>? 则必须使用立室形式<>
  rem 必要双写的字符
  rem 不可以作为密码的字符 "
  set password|findstr "\"
  if "%errorlevel%"=="0" echo 口令精确&goto end
  echo 口令错误&goto allyesno
  :end
  set password=>nul
  echo 你乐成登录系统
  注:当密码字符串中有字符\的时候 必要将字符双写\\
  例 set password|findstr "\<\\\>"
  登录的时候 只必要写一次\不必要双写
  " 字符 不可以作为密码字符串 如果密码字符串包罗此行任一字符~`!@#$%^&*()_+|-=[]{};':,./<>? 则必须使用立室形式\<\>
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: