找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31418|回复: 4

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

[复制链接]
发表于 2015-9-2 20:01:53 | 显示全部楼层 |阅读模式
本帖最后由 尘丶 于 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:51 | 显示全部楼层
本帖最后由 回家路上 于 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技术 +1 收起 理由
尘丶 + 1 乐于助人

查看全部评分

发表于 2015-9-3 00:01:38 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
尘丶 + 1 乐于助人

查看全部评分

发表于 2015-9-3 13:18:47 | 显示全部楼层
我也来个
  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技术 +1 收起 理由
尘丶 + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-9-3 15:19:04 | 显示全部楼层
最好都是纯批~~~别的我不会(看不懂)~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 16:24 , Processed in 0.018991 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表