Board logo

标题: [文本处理] [已解决]批处理怎样随机提取单词? [打印本页]

作者: 尘丶    时间: 2015-9-2 20:01     标题: [已解决]批处理怎样随机提取单词?

本帖最后由 尘丶 于 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开头了
谁能告诉我用什么随机抽取那些中文意思就可以了 思路也可以
作者: 回家路上    时间: 2015-9-2 21:08

本帖最后由 回家路上 于 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. }
复制代码

作者: pcl_test    时间: 2015-9-3 00:01

本帖最后由 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
复制代码

作者: WHY    时间: 2015-9-3 13:18

我也来个
  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'))
复制代码

作者: 尘丶    时间: 2015-9-3 15:19

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




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