Board logo

标题: [文本处理] 批处理用set代替choice怎么写? [打印本页]

作者: FIFM007    时间: 2013-7-17 23:17     标题: 批处理用set代替choice怎么写?

  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=0 1 2 3 4 5 6 7 8 9 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"
  3. for %%a in (%str%) do set /a n+=1&set ".!n!=%%a"
  4. :lp
  5. cls&set /p=请输入八位由数字和字母组成的密码,请注意大小写:<nul
  6. if defined pwds set /p=%pwds%<nul
  7. if "%m%" equ "8" echo.&echo.&goto next
  8. choice /n /cs /c %str: =%
  9. set "pwds=%pwds%*"&set "pwd=%pwd%!.%errorlevel%!"
  10. set /a m+=1&goto lp
  11. :next
  12. if "%pwd%" equ "add12345" (echo 密码正确) else (echo 密码错误)
  13. pause>nul
复制代码
上面的这句choice /n /cs /c %str: =%      用SET命令怎么写代替?高手能详细点吗?
作者: CrLf    时间: 2013-7-18 16:14

ascode 方案,未对中文进行兼容:
  1. @echo off
  2. call :ch.com
  3. ::获取 ch.com
  4. ch.com abc
  5. ::调用 ch.com,直到用户的输入中含有 a 或 b 或 c 的时候退出,退出码为用户输入与参数中对应字符所在的位置
  6. 您输入的是第 %errorlevel% 项
  7. pause&exit
  8. :ch.com
  9. @(echo RQPUWP]UZV_BBBB5``PY(E.(E3^)E5^)E:(E^>^)EFSX3CH^<P}pE^< ~r%%ooQRY2AY0@G uG0EGB?
  10. echo KO00O0KNX01K91200JMJKN2OLN9J8NNKO0001KNp01K93030JMJKN2OLKN0001_]XYZN9N810
  11. echo;K40KLM213L00tO8K408LM218JM0KN8200JL3JL2t063L0MtN6NKO58KL62L82K44LLM21
  12. )>"ch.com"
  13. ::这个 bat 是生成 "ch.com" 的模板,使用时可以直接复制
  14. exit/b
复制代码

作者: FIFM007    时间: 2013-7-18 19:56

回复 2# CrLf


    你写的什么我看不懂呀!
作者: CrLf    时间: 2013-7-18 23:31

回复 3# FIFM007


    改写你的代码如下:
  1. @echo off&chcp 437|GRAFTABL>nul 936
  2. setlocal enabledelayedexpansion
  3. call :ch.com
  4. ::获取 ch.com
  5. set "str=0 1 2 3 4 5 6 7 8 9 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"
  6. for %%a in (%str%) do set /a n+=1&set ".!n!=%%a"
  7. :lp
  8. cls&set /p=请输入八位由数字和字母组成的密码,请注意大小写:<nul
  9. if defined pwds set /p=%pwds%<nul
  10. if "%m%" equ "8" echo.&echo.&goto next
  11. ch.com %str: =%
  12. ::调用 ch.com,直到用户的输入中含有任意指定字符的时候退出,退出码为用户输入与参数中对应字符所在的位置
  13. set "pwds=%pwds%*"&set "pwd=%pwd%!.%errorlevel%!"
  14. set /a m+=1&goto lp
  15. :next
  16. if "%pwd%" equ "add12345" (echo 密码正确) else (echo 密码错误)
  17. pause>nul&exit
  18. :ch.com
  19. @(echo RQPUWP]UZV_BBBB5``PY(E.(E3^)E5^)E:(E^>^)EFSX3CH^<P}pE^< ~r%%ooQRY2AY0@G uG0EGB?
  20. echo KO00O0KNX01K91200JMJKN2OLN9J8NNKO0001KNp01K93030JMJKN2OLKN0001_]XYZN9N810
  21. echo;K40KLM213L00tO8K408LM218JM0KN8200JL3JL2t063L0MtN6NKO58KL62L82K44LLM21
  22. )>"ch.com"
  23. ::这个 bat 是生成 "ch.com" 的模板,使用时可以直接复制
  24. exit/b
复制代码





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