返回列表 发帖

[其他] 知识点测试批处理小工具

以下代码暂仅完成一个概念性, 设计方案上我提出一些功能还未完成, 效率上也很低, 望有兴趣者共同完善与增强
代码刚刚通过初步测试, 谢谢
@echo off & setlocal enabledelayedexpansion
title 知识点测试小工具
rem 设计方案
rem 随机选择一个知识条目, 根据提示信息测试输入对应知识名词, 术语, 命令等.
rem 避免要求输入中文答案, 避免答案区分大小写
rem 兼容命令中参数的多种次序
rem 为对应条目建立答题记录, 评估掌握度
rem 搜索出总条目数, 根据总条目数确定序号选择随机数范围
rem 生成随机序号, 找出并显示对应条目 Q, 接受键盘输入 A_USER,
rem 据用户输入 A_USER 与 A 是否吻合或相符, 输出测试评定信息.
rem 知识点描述格式, Q: 下接多行文本; A: 下接单行文本; R: 下接多行文本或留空
rem 知识点标号 :kp 后的数字起始于 1, 逐个递加
rem 全部知识点全部置于文件代码之后
rem 所有代码行尾不要有空格或其它空白字符
>nul (
  for /f "delims=" %%l in (%~s0) do (
    echo,%%l|findstr /i "^:kp"&&(set "tt=%%l" & set /a sum_kp=!tt:~3!)
  )
)
echo The sum of knowledge is !sum_kp!
pause
for /l %%i in (0 0 0) do (
  set /a ii=!random! %% sum_kp + 1
  call :do %~s0 !ii!
)
exit /b
:do
rem 问题部分直接输出, 标准答案缓存进变量 A_STD 答题后输出, Reference 部分最后输出
echo..&echo.
set "found_kp=N" & set "QState=E" & set "AState=E" & set "RState=E" & set "A_USER="
for /f "delims=" %%l in (%1) do (
  if /i "!found_kp!"=="Y" (
    echo,%%l|findstr /i "^:kp">nul&& (exit /b)& rem 结束当前答题
    echo,%%l|findstr /i "^Q:">nul&&(
      set "QState=S"
    ) || (
      echo,%%l|findstr /i "^A:">nul&&(
        set "AState=S"
      )||(
        echo,%%l|findstr /i "^R:">nul&&(set "RState=S")||(
          if /i "!found_kp!!QState!!AState!!RState!"=="YSSE" (
            set "A_STD=%%l"
            (set /p A_USER=Answer: )
            if /i "!A_USER!"=="!A_STD!" (echo GOOD^!) else echo ERROR
            echo Standard Answer: !A_STD!
            echo Reference:
          ) else (
            echo %%l
          )
        )
      )
    )
  ) else (
    echo,%%l|findstr /i "^:kp">nul&& (set "tt=%%l" & set /a c_kp=!tt:~3! & if "!c_kp!"=="%2" set "found_kp=Y")
  )
)
exit /b
:kp1
Q:
MS 何时停止对 WIN2K 的支持? 回答格式: yyyy.mm.dd
A:
2010.07.13
R:
Support for Windows 2000 is ending
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.
:kp2
Q:
WINXP 下, 命令行启用延缓环境变量扩展名的命令
A:
Setlocal EnableDelayedExpansion
R:
:kp3
Q:
Windows 2000 Server 支持每台机器上最多拥有多少个处理器(请输入一个阿拉伯数字)?
A:
4
R:
Windows 2000 Server 面向小型企业的服务器领域。它的原名就是Windows NT
5.0 Server。支持每台机器上最多拥有4个处理器,最低支持128MB内存,最高支持4GB内存。COPY

返回列表