[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样随机提取单词?

本帖最后由 尘丶 于 2015-9-4 16:56 编辑

我想做个单词小程序,帮助自己记下单词,我打算把课本单元的单词打进一个TXT里面,但是不知道怎么随机抽取单词好。
文本如下;
Unit 1
a art. 一个
ability n. 能力;才能
able adj. 能够;有能力的
        be able to do sth. 有能力做某事
about adv. 大约;到处
        prep. 关于;在各处
above prep. 在···上面
        adj. 上面的
        adv. 在···之上
abroad adv. 到(在)国外
        go abroad 出国
absent adj. 缺席,不在
        be absent from 缺席
absolutely adv. 完全地,绝对地
accept v. 接受
accident n. 事故,意外的事
        by accident 偶然地
account n. 账目;描述
        account for 说明;解释
accountant n. 会计,会计师
accurate adj. 准确的,确切的
ache vi.&n. 痛,疼痛
achieve v. 达到,取得
achievement n. 成就
across prep.横过,穿过
act n. 法令,条例
        v.扮演(角色),演出(戏)
        act as 充当,担任
active adj. 积极的,活跃的
activity n. 活动
actor n. 演员
actress n. 女演员
actual adj. 实际的;现实的
add v. 添加,增加
        addition n.加;增加物
        in addition 除此之外,并且
address n. 地址
adjust v. 调整;校准
administration n. 管理;行政
admire v. 钦佩;羡慕
admit vt. 承认,准许(入场,入学等)
adopt v. 采用,采纳
adult n. 成年人
advance v. 推进,促进;前进
advantage n. 优点;好处
adventure n. 冒险;奇遇
advertisement n. 广告
advice n. 忠告,建议
advise vt. 忠告,劝告,建议
affair n. 事,事情
affect vt. 影响
afford vt. 负担得起(···的费用)
afraid adj. 害怕的;担心
        be afraid of 担心,害怕
after adv. 以后;后来;向后
        prep. 在···之后;在···后面
        conj. 在···以后
        after all 毕竟
afternoon n. 下午,午后
again adv. 再一次;再,又
against prep. 对着,反对
age n. 年龄;时代
        at the age of 在···的年龄
agency n. 代理(处),经办(处);机构
ago adv. 以前
agree v. 同意;应允
        agree to do sth. 同意做某事
        agree with sb. 同意某人的看法
agreement n. 同意,一致;协定
agriculture n. 农业
像这样的20课
我想随机抽取里面的单词 比如 随机抽取50个单词,第一个是 到(在)国外
输入单词英文
对的话显示yes,错的话输出no,
然后都显示单词的全部信息
abroad adv. 到(在)国外
        go abroad 出国
有些单词后面还跟着一些的在开头部分我都用Tab开头了
谁能告诉我用什么随机抽取那些中文意思就可以了 思路也可以

最好都是纯批~~~别的我不会(看不懂)~~

TOP

我也来个
  1. @if(0)==(0) echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*delims=/" %%i in ('cscript -nologo -e:jscript "%~f0"^<1.txt') do (
  4.     set /p "c=%%j <--对应-->"
  5.     if "!c!"=="%%i" (echo 正确) else (echo 错误 应为 %%i)
  6. )
  7. pause & exit/b
  8. @end
  9. var str = WScript.StdIn.ReadAll() + '\r\n',arr = [];
  10. str.replace(
  11.     /^([a-z]+)((\s+\S+\.\s*.+\n)+)/mg,
  12.     function(a,b,c){
  13.         c = c.replace(/\s+\S+\.\s*(.+?)\r?\n/g, '/$1')
  14. arr.push(b + c);
  15.     }
  16. ).replace(
  17.     /^\s+(.+)\s+([^\x00-\xff].+)$/mg,
  18.     function(a,b,c){arr.push(b + '/' + c)}
  19. )
  20. arr = arr.sort(function(){return(0.5-Math.random())}).slice(0,50);
  21. WScript.Echo(arr.join('\n'))
复制代码
1

评分人数

TOP

本帖最后由 pcl_test 于 2015-9-10 22:08 编辑
  1. @echo off
  2. :loop
  3. cls
  4. setlocal enabledelayedexpansion
  5. set "dic=词表.txt"
  6. set/a n=true=false=null=0
  7. for /f "tokens=1,2* delims=: " %%a in ('findstr /n "^[a-Z]" "%dic%"') do set "#!random:~-2!!random:~-2!%%b=%%a^|%%b %%c"
  8. for /f "tokens=1,2 delims==|" %%a in ('set #') do (
  9.     set/a n+=1,m=%%b-1
  10.     if !m! equ 0 (set t=) else (set "t=skip=!m!")
  11.     call :read !t!
  12.     if !n! equ 50 goto :break
  13. )
  14. :break
  15. echo;对%true%,错%false%,未答%null%
  16. echo;按任意键,再来一次&pause>nul
  17. endlocal
  18. goto loop
  19. :read
  20. for /f "%* usebackq delims=" %%i in ("%dic%") do (
  21.     set "str=%%i"
  22.     set "t=%%i"
  23.     if not defined def (
  24.         for %%x in (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 . ^&) do set t=!t:%%x=!
  25.         for /f "tokens=*" %%y in ("!t!") do echo;!n! 中文词义:%%y
  26.         set answer=
  27.         set /p answer=请输入相应的英文单词并按回车键:
  28.         if defined answer (
  29.             echo;"%%i"|findstr /rc:"\<!answer!\>" >nul&&(
  30.                 set/a true+=1&echo;^>^>True)||(set/a false+=1&echo;^>^>False)
  31.         ) else set/a null+=1
  32.         echo;--------------------------------------------
  33.      )
  34.     if defined def if "!str:~,1!" neq " " (goto :end)
  35.     echo;%%i&set def=1
  36. )
  37. :end
  38. echo;&set def=&goto :eof
复制代码
1

评分人数

TOP

本帖最后由 回家路上 于 2015-9-2 23:35 编辑

回复 1# 尘丶


(1)编号
(2)随机

补上混编代码
  1. @if(0)==(0) echo off & setlocal enabledelayedexpansion
  2. :main
  3. for /f "tokens=1,2 delims= " %%i in ('type 1.txt^|findstr /b "[a-z]"^|cscript -nologo -e:jscript "%~f0"') do (
  4. set /p c=%%j   ^<---对应---^>   
  5. if "!c!" equ "%%i" (echo;正确) else echo;错误,应为--%%i
  6. )
  7. echo;按任意键,再来50个单词。
  8. pause>nul
  9. goto :main
  10. pause & exit /b
  11. @end
  12. var content = WScript.StdIn.ReadAll();
  13. var ce = [], i=0;
  14. content.replace(/(\w+) +.* +([^\r\n]+)/g,function($0,$1,$2){
  15. ce[i++] = $1+" "+$2;
  16. });
  17. ce.sort(function(){return 0.5-Math.random();});
  18. for (var i=0; i< 50; i++) {
  19. WSH.Echo(ce[i]);
  20. }
复制代码
1

评分人数

人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

返回列表