无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 36848|回复: 46
打印 上一主题 下一主题

批处理版的英汉互译器

[复制链接]
跳转到指定楼层
1#
发表于 2006-12-28 16:22:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  用批处理来做翻译!呵呵,够狂妄吧?
  1. @echo off
  2. :: 功能:
  3. ::
  4. ::   ① 输入英文,显示该英文条目下的所有内容;
  5. :: 同时显示词库中存在的、词义相同或头部相同的其他单词;
  6. ::     ② 输入汉语,显示词义中包含该汉语词汇的所有英文,
  7. :: 但是,当某个单词有多行解释的时候,有可能查找不到单词。
  8. ::
  9. :: 词库文件的格式要求:
  10. ::
  11. ::   文件第一行内容必须为空,或者不能出现要查找内容的正文
  12. ::   一个段落块的首行必须为纯英文词汇
  13. ::   中文翻译内容紧接着另起一行(不允许出现纯字母行),可以有多行
  14. ::   翻译之下可以有举例内容
  15. ::   每个解释后面加中文半角状态下的分号和空格
  16. ::     解释内容可以在同一行,也可以在不同行
  17. ::   解释之下的举例内容尽量避免出现中文半角状态下的分号和空格连用的情况
  18. ::   每个段落块允许使用空行分隔
  19. ::
  20. ::             code by JM 2006-10-11~14    bbs.cn-dos.net  Thanks to 3742668

  21. :input_var
  22. title 英汉互译器
  23. cls
  24. set line=
  25. set postil=
  26. set postil_content=
  27. set similar=
  28. set input=
  29. set /p input=请输入要查询的内容(要退出请直接回车):
  30. if "%input%"=="" exit

  31. ren ============== 判断输入类型 ==============
  32. cls
  33. echo %input%|findstr /b "[a-zA-Z]">nul && goto letters || goto not-letters

  34. ren ============== 英译汉 ==============
  35. :letters
  36. title 英汉互译器-英译汉
  37. :: 先提取匹配单词的第一条记录的行数,然后再从这行之下查找第一次出现的单词
  38. :: 两个单词之间的内容就是英文的翻译
  39. for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
  40.     if /i "%%j"=="%input%" set line=%%i&goto word_finded
  41. )
  42. if "%line%"=="" goto no-item
  43. :word_finded
  44. echo _________________________________
  45. echo 要查找的单词:%input%
  46. echo.
  47. setlocal enabledelayedexpansion
  48. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  49.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(goto no-postil)||(
  50.         echo     %%i&if not "%%i"=="" set postil=exist
  51.         echo %%i|findstr /c:"; ">nul &&(
  52.             set postil_content=!postil_content!%%i
  53.         )            
  54.     )
  55. )
  56. :no-postil
  57. if "%postil%"=="" (echo     %input% 条目下没有任何内容 & goto end)
  58. echo _________________________________
  59. echo 词义类似的单词:
  60. echo.
  61. for /f "tokens=1* delims=:" %%i in ('findstr /nr "%postil_content%" 词库.txt') do (
  62.     if not "%%j"=="" set /a line=%%i-2&& call :check_similar
  63. )
  64. if "%similar%"=="" echo     暂无。
  65. echo _________________________________
  66. echo 头部相同的其他词汇:
  67. echo.
  68. set similar=
  69. for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
  70.     echo %%j|findstr "^[a-zA-Z]*">nul && (
  71.         if not "%%j"=="%input%" set similar=exist&echo     %%j
  72.     )
  73. )
  74. if "%similar%"=="" echo     暂无。
  75. :end
  76. echo _________________________________
  77. echo.
  78. pause
  79. goto input_var

  80. :check_similar
  81. :: 查找词义中含有%postil_content%的所有英文词汇
  82. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  83.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(
  84.         if not "%%i"=="%input%" (
  85.             echo     %%i&set similar=exist&goto :eof
  86.             ) else (goto :eof)
  87.     )||(set /a line=%line%-1& goto check_similar)
  88. )
  89. goto :eof

  90. ren ============== 汉译英 ==============
  91. :not-letters
  92. title 英汉互译器-汉译英
  93. :: 先提取包含该汉语词汇的第一条记录的行数,然后再查找位于该行之上的纯字母行
  94. :: 则第一次找到的纯字母行就是要查找的英文单词
  95. :: 重复以上过程就可以查找到词义中包含这个汉语词汇的所有英文词汇
  96. echo _________________________________
  97. echo.
  98. echo %input%:
  99. echo.
  100. for /f "tokens=1* delims=:" %%i in ('findstr /nrc:"%input%; " 词库.txt') do (
  101.     if not "%%j"=="" set /a line=%%i-2&& call :check_word
  102. )
  103. if "%postil%"=="" goto no-item
  104. echo _________________________________
  105. echo.
  106. pause
  107. goto input_var

  108. :check_word
  109. :: 查找词义中含有%input%的所有英文词汇
  110. set postil=exist
  111. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  112.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(echo     %%i&&goto :eof)||(
  113.         set /a line=%line%-1&& goto check_word
  114.     )
  115. )
  116. goto :eof

  117. ren ============== 出错提示 ==============
  118. :no-item
  119. cls
  120. echo _________________________________
  121. echo.
  122. echo %input%:
  123. echo   没有找到该条目!
  124. echo _________________________________
  125. echo.
  126. pause
  127. goto input_var
复制代码
  词库.txt 格式举例:
  1. (此行为顶行,不允许出现要查找内容的正文)
  2. China
  3. n.
  4. 中国, 瓷器

  5. DOS
  6. n.
  7. 磁盘操作系统

  8. name
  9. n.
  10. 名字, 名称, 姓名, 名誉
  11. vt.
  12. 命名, 提名, 叫出, 指定
  13. adj.
  14. 姓名的, 据以取名的

  15. who
  16. pron.
  17. 谁, 那...的(人)
复制代码

[ 本帖最后由 namejm 于 2007-5-28 12:31 PM 编辑 ]
2#
发表于 2006-12-28 17:37:18 | 只看该作者
精华,不用多说.
回复

使用道具 举报

3#
发表于 2006-12-29 00:45:13 | 只看该作者
不久前在dos联盟就看到你发过了...
回复

使用道具 举报

4#
发表于 2006-12-30 21:22:13 | 只看该作者
什么都有可能,楼主dos都玩到这种程度了,实在佩服!
回复

使用道具 举报

5#
发表于 2007-1-3 16:00:57 | 只看该作者
高手中的高手
回复

使用道具 举报

6#
发表于 2007-1-5 11:39:12 | 只看该作者
批处理到这地步,算是登峰造极了.牛人啊!
回复

使用道具 举报

7#
发表于 2007-1-13 17:25:11 | 只看该作者
没有测试成功,不好意思
回复

使用道具 举报

8#
 楼主| 发表于 2007-1-13 17:42:18 | 只看该作者
  请问你是在什么情况下测试不成功的?词库格式没写错吧?
回复

使用道具 举报

9#
发表于 2007-1-14 01:36:28 | 只看该作者
果然是高手,佩服
回复

使用道具 举报

10#
发表于 2007-1-14 16:26:25 | 只看该作者
支持,正好要用,谢了。。。
回复

使用道具 举报

11#
发表于 2007-1-15 18:06:03 | 只看该作者
高手,真的太强了
回复

使用道具 举报

12#
发表于 2007-1-23 15:55:44 | 只看该作者
我实在的,我真的不知道用,希望楼主详细讲解一下
回复

使用道具 举报

13#
发表于 2007-1-24 18:09:54 | 只看该作者
哪里有词库呢?麻烦说一下
回复

使用道具 举报

14#
发表于 2007-2-11 21:40:40 | 只看该作者
不知道怎么说好了
太高级
回复

使用道具 举报

15#
发表于 2007-5-28 08:41:00 | 只看该作者
谢谢楼主,不过汉译英的功能不能实现……
回复

使用道具 举报

16#
 楼主| 发表于 2007-5-28 12:30:49 | 只看该作者
  当某个单词有多行解释的时候,汉译英会查不到单词,但是不影响英译汉,因为汉译英的时候,是先查找到解释之后,直接往前跳两行来查询单词,这个牵涉到文本的反序读取,如果每次只往前跳一行的话,效率会大打折扣。为了兼顾效率,目前暂时还找不到可行的方案来解决文本的反序读取问题,可能得借助第三方软件才能完美地解决。
回复

使用道具 举报

17#
发表于 2007-6-27 08:15:55 | 只看该作者
牛 学习了!!!:L :L
回复

使用道具 举报

18#
发表于 2007-6-30 21:11:29 | 只看该作者
强!!~~顶!~:hug:
回复

使用道具 举报

19#
发表于 2007-7-3 16:17:54 | 只看该作者
这纯粹是自找麻烦。:lol :lol
回复

使用道具 举报

20#
发表于 2007-7-10 13:55:40 | 只看该作者
学习了,支持楼主!!!!
回复

使用道具 举报

21#
发表于 2007-7-11 11:32:49 | 只看该作者
太COOL了,BAT的功能还真多.
回复

使用道具 举报

22#
发表于 2007-7-11 13:57:14 | 只看该作者
批处理使用出神入化了,佩服
回复

使用道具 举报

23#
发表于 2007-11-18 12:48:21 | 只看该作者
楼主真不错啊,佩服!学习了
回复

使用道具 举报

24#
发表于 2007-11-19 10:37:53 | 只看该作者
DOS的高手。

我想对编程有一定的帮助的
回复

使用道具 举报

25#
发表于 2007-11-19 11:01:45 | 只看该作者
不錯!真是批處理的高手!
回复

使用道具 举报

26#
发表于 2007-11-21 17:53:10 | 只看该作者
我的怎么不行,输入后没反应?
回复

使用道具 举报

27#
发表于 2007-11-21 21:57:40 | 只看该作者
牛人可真多啊!o(∩_∩)o...哈哈
回复

使用道具 举报

28#
发表于 2008-2-19 20:01:11 | 只看该作者
高手就是不一样。谢谢。
回复

使用道具 举报

29#
发表于 2008-2-20 19:53:36 | 只看该作者
制作批处理的那个软件里面就有。
回复

使用道具 举报

30#
 楼主| 发表于 2008-2-20 20:46:38 | 只看该作者
是哪个软件?地址或者软件发出来看看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 20:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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