Board logo

标题: [其他] 知识点测试批处理小工具 [打印本页]

作者: neorobin    时间: 2010-6-16 18:55     标题: 知识点测试批处理小工具

以下代码暂仅完成一个概念性, 设计方案上我提出一些功能还未完成, 效率上也很低, 望有兴趣者共同完善与增强
代码刚刚通过初步测试, 谢谢
  1. @echo off & setlocal enabledelayedexpansion
  2. title 知识点测试小工具
  3. rem 设计方案
  4. rem 随机选择一个知识条目, 根据提示信息测试输入对应知识名词, 术语, 命令等.
  5. rem 避免要求输入中文答案, 避免答案区分大小写
  6. rem 兼容命令中参数的多种次序
  7. rem 为对应条目建立答题记录, 评估掌握度
  8. rem 搜索出总条目数, 根据总条目数确定序号选择随机数范围
  9. rem 生成随机序号, 找出并显示对应条目 Q, 接受键盘输入 A_USER,
  10. rem 据用户输入 A_USER 与 A 是否吻合或相符, 输出测试评定信息.
  11. rem 知识点描述格式, Q: 下接多行文本; A: 下接单行文本; R: 下接多行文本或留空
  12. rem 知识点标号 :kp 后的数字起始于 1, 逐个递加
  13. rem 全部知识点全部置于文件代码之后
  14. rem 所有代码行尾不要有空格或其它空白字符
  15. >nul (
  16.   for /f "delims=" %%l in (%~s0) do (
  17.     echo,%%l|findstr /i "^:kp"&&(set "tt=%%l" & set /a sum_kp=!tt:~3!)
  18.   )
  19. )
  20. echo The sum of knowledge is !sum_kp!
  21. pause
  22. for /l %%i in (0 0 0) do (
  23.   set /a ii=!random! %% sum_kp + 1
  24.   call :do %~s0 !ii!
  25. )
  26. exit /b
  27. :do
  28. rem 问题部分直接输出, 标准答案缓存进变量 A_STD 答题后输出, Reference 部分最后输出
  29. echo..&echo.
  30. set "found_kp=N" & set "QState=E" & set "AState=E" & set "RState=E" & set "A_USER="
  31. for /f "delims=" %%l in (%1) do (
  32.   if /i "!found_kp!"=="Y" (
  33.     echo,%%l|findstr /i "^:kp">nul&& (exit /b)& rem 结束当前答题
  34.     echo,%%l|findstr /i "^Q:">nul&&(
  35.       set "QState=S"
  36.     ) || (
  37.       echo,%%l|findstr /i "^A:">nul&&(
  38.         set "AState=S"
  39.       )||(
  40.         echo,%%l|findstr /i "^R:">nul&&(set "RState=S")||(
  41.           if /i "!found_kp!!QState!!AState!!RState!"=="YSSE" (
  42.             set "A_STD=%%l"
  43.             (set /p A_USER=Answer: )
  44.             if /i "!A_USER!"=="!A_STD!" (echo GOOD^!) else echo ERROR
  45.             echo Standard Answer: !A_STD!
  46.             echo Reference:
  47.           ) else (
  48.             echo %%l
  49.           )
  50.         )
  51.       )
  52.     )
  53.   ) else (
  54.     echo,%%l|findstr /i "^:kp">nul&& (set "tt=%%l" & set /a c_kp=!tt:~3! & if "!c_kp!"=="%2" set "found_kp=Y")
  55.   )
  56. )
  57. exit /b
  58. :kp1
  59. Q:
  60. MS 何时停止对 WIN2K 的支持? 回答格式: yyyy.mm.dd
  61. A:
  62. 2010.07.13
  63. R:
  64. Support for Windows 2000 is ending
  65. On July 13th, 2010, support for Windows 2000 Server ends. The Windows 2000 End-of-Support Solution Center is the starting point for planning your migration strategy from previous versions of Windows Server.
  66. :kp2
  67. Q:
  68. WINXP 下, 命令行启用延缓环境变量扩展名的命令
  69. A:
  70. Setlocal EnableDelayedExpansion
  71. R:
  72. :kp3
  73. Q:
  74. Windows 2000 Server 支持每台机器上最多拥有多少个处理器(请输入一个阿拉伯数字)?
  75. A:
  76. 4
  77. R:
  78. Windows 2000 Server 面向小型企业的服务器领域。它的原名就是Windows NT
  79. 5.0 Server。支持每台机器上最多拥有4个处理器,最低支持128MB内存,最高支持4GB内存。
复制代码





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