Board logo

标题: [其他] 批处理英汉互译器[2006-10-14] [打印本页]

作者: namejm    时间: 2008-10-12 01:51     标题: 批处理英汉互译器[2006-10-14]

  这是本人2006年10月份发表在cn-dos上的一个小作品,原帖地址:http://www.cn-dos.net/forum/viewthread.php?tid=23683,在第33楼。若使用中有错误,请及时跟帖提出。
  1. @echo off
  2. :: 功能:
  3. ::
  4. ::   ① 输入英文,显示该英文条目下的所有内容;
  5. :: 同时显示词库中存在的、词义相同或头部相同的其他单词;
  6. ::     ② 输入汉语,显示词义中包含该汉语词汇的所有英文
  7. ::
  8. :: 词库文件的格式要求:
  9. ::
  10. ::   文件第一行内容必须为空,或者不能出现要查找内容的正文
  11. ::   一个段落块的首行必须为纯英文词汇
  12. ::   中文翻译内容紧接着另起一行(不允许出现纯字母行),可以有多行
  13. ::   翻译之下可以有举例内容
  14. ::   每个解释后面加中文半角状态下的分号和空格
  15. ::     解释内容可以在同一行,也可以在不同行
  16. ::   解释之下的举例内容尽量避免出现中文半角状态下的分号和空格连用的情况
  17. ::   每个段落块允许使用空行分隔
  18. ::
  19. ::             code by JM 2006-10-11~14    http://www.cn-dos.net  Thanks to 3742668
  20. :input_var
  21. title 英汉互译器
  22. cls
  23. set line=
  24. set postil=
  25. set postil_content=
  26. set similar=
  27. set input=
  28. set /p input=请输入要查询的内容(要退出请直接回车):
  29. if "%input%"=="" exit
  30. ren ============== 判断输入类型 ==============
  31. cls
  32. echo %input%|findstr "^[a-zA-Z]*$">nul && goto letters || goto not-letters
  33. ren ============== 英译汉 ==============
  34. :letters
  35. title 英汉互译器-英译汉
  36. :: 先提取匹配单词的第一条记录的行数,然后再从这行之下查找第一次出现的单词
  37. :: 两个单词之间的内容就是英文的翻译
  38. for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
  39.     if /i "%%j"=="%input%" set line=%%i&goto word_finded
  40. )
  41. if "%line%"=="" goto no-item
  42. :word_finded
  43. echo _________________________________
  44. echo 要查找的单词:%input%
  45. echo.
  46. setlocal enabledelayedexpansion
  47. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  48.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(goto no-postil)||(
  49.         echo     %%i&if not "%%i"=="" set postil=exist
  50.         echo %%i|findstr /c:"; ">nul &&(
  51.             set postil_content=!postil_content!%%i
  52.         )            
  53.     )
  54. )
  55. :no-postil
  56. if "%postil%"=="" (echo     %input% 条目下没有任何内容 & goto end)
  57. echo _________________________________
  58. echo 词义类似的单词:
  59. echo.
  60. for /f "tokens=1* delims=:" %%i in ('findstr /nr "%postil_content%" 词库.txt') do (
  61.     if not "%%j"=="" set /a line=%%i-2&& call :check_similar
  62. )
  63. if "%similar%"=="" echo     暂无。
  64. echo _________________________________
  65. echo 头部相同的其他词汇:
  66. echo.
  67. set similar=
  68. for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
  69.     echo %%j|findstr "^[a-zA-Z]*">nul && (
  70.         if not "%%j"=="%input%" set similar=exist&echo     %%j
  71.     )
  72. )
  73. if "%similar%"=="" echo     暂无。
  74. :end
  75. echo _________________________________
  76. echo.
  77. pause
  78. goto input_var
  79. :check_similar
  80. :: 查找词义中含有%postil_content%的所有英文词汇
  81. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  82.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(
  83.         if not "%%i"=="%input%" (
  84.             echo     %%i&set similar=exist&goto :eof
  85.             ) else (goto :eof)
  86.     )||(set /a line=%line%-1& goto check_similar)
  87. )
  88. goto :eof
  89. ren ============== 汉译英 ==============
  90. :not-letters
  91. title 英汉互译器-汉译英
  92. :: 先提取包含该汉语词汇的第一条记录的行数,然后再查找位于该行之上的纯字母行
  93. :: 则第一次找到的纯字母行就是要查找的英文单词
  94. :: 重复以上过程就可以查找到词义中包含这个汉语词汇的所有英文词汇
  95. echo _________________________________
  96. echo.
  97. echo %input%:
  98. echo.
  99. for /f "tokens=1* delims=:" %%i in ('findstr /nrc:"%input%; " 词库.txt') do (
  100.     if not "%%j"=="" set /a line=%%i-2&& call :check_word
  101. )
  102. if "%postil%"=="" goto no-item
  103. echo _________________________________
  104. echo.
  105. pause
  106. goto input_var
  107. :check_word
  108. :: 查找词义中含有%input%的所有英文词汇
  109. set postil=exist
  110. for /f "skip=%line% delims=" %%i in (词库.txt) do (
  111.     echo %%i|findstr "^[a-zA-Z]*$">nul &&(echo     %%i&&goto :eof)||(
  112.         set /a line=%line%-1&& goto check_word
  113.     )
  114. )
  115. goto :eof
  116. ren ============== 出错提示 ==============
  117. :no-item
  118. cls
  119. echo _________________________________
  120. echo.
  121. echo %input%:
  122. echo   没有找到该条目!
  123. echo _________________________________
  124. echo.
  125. pause
  126. goto input_var
复制代码

作者: cuipengfei    时间: 2010-10-9 15:05

没有找到该条目!怎么回事啊?应该还有一个词语文档吧?




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