无忧启动论坛
标题:
批处理版的英汉互译器
[打印本页]
作者:
namejm
时间:
2006-12-28 16:22
标题:
批处理版的英汉互译器
用批处理来做翻译!呵呵,够狂妄吧?
@echo off
:: 功能:
::
:: ① 输入英文,显示该英文条目下的所有内容;
:: 同时显示词库中存在的、词义相同或头部相同的其他单词;
:: ② 输入汉语,显示词义中包含该汉语词汇的所有英文,
:: 但是,当某个单词有多行解释的时候,有可能查找不到单词。
::
:: 词库文件的格式要求:
::
:: 文件第一行内容必须为空,或者不能出现要查找内容的正文
:: 一个段落块的首行必须为纯英文词汇
:: 中文翻译内容紧接着另起一行(不允许出现纯字母行),可以有多行
:: 翻译之下可以有举例内容
:: 每个解释后面加中文半角状态下的分号和空格
:: 解释内容可以在同一行,也可以在不同行
:: 解释之下的举例内容尽量避免出现中文半角状态下的分号和空格连用的情况
:: 每个段落块允许使用空行分隔
::
:: code by JM 2006-10-11~14 bbs.cn-dos.net Thanks to 3742668
:input_var
title 英汉互译器
cls
set line=
set postil=
set postil_content=
set similar=
set input=
set /p input=请输入要查询的内容(要退出请直接回车):
if "%input%"=="" exit
ren ============== 判断输入类型 ==============
cls
echo %input%|findstr /b "[a-zA-Z]">nul && goto letters || goto not-letters
ren ============== 英译汉 ==============
:letters
title 英汉互译器-英译汉
:: 先提取匹配单词的第一条记录的行数,然后再从这行之下查找第一次出现的单词
:: 两个单词之间的内容就是英文的翻译
for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
if /i "%%j"=="%input%" set line=%%i&goto word_finded
)
if "%line%"=="" goto no-item
:word_finded
echo _________________________________
echo 要查找的单词:%input%
echo.
setlocal enabledelayedexpansion
for /f "skip=%line% delims=" %%i in (词库.txt) do (
echo %%i|findstr "^[a-zA-Z]*$">nul &&(goto no-postil)||(
echo %%i&if not "%%i"=="" set postil=exist
echo %%i|findstr /c:"; ">nul &&(
set postil_content=!postil_content!%%i
)
)
)
:no-postil
if "%postil%"=="" (echo %input% 条目下没有任何内容 & goto end)
echo _________________________________
echo 词义类似的单词:
echo.
for /f "tokens=1* delims=:" %%i in ('findstr /nr "%postil_content%" 词库.txt') do (
if not "%%j"=="" set /a line=%%i-2&& call :check_similar
)
if "%similar%"=="" echo 暂无。
echo _________________________________
echo 头部相同的其他词汇:
echo.
set similar=
for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" 词库.txt') do (
echo %%j|findstr "^[a-zA-Z]*">nul && (
if not "%%j"=="%input%" set similar=exist&echo %%j
)
)
if "%similar%"=="" echo 暂无。
:end
echo _________________________________
echo.
pause
goto input_var
:check_similar
:: 查找词义中含有%postil_content%的所有英文词汇
for /f "skip=%line% delims=" %%i in (词库.txt) do (
echo %%i|findstr "^[a-zA-Z]*$">nul &&(
if not "%%i"=="%input%" (
echo %%i&set similar=exist&goto :eof
) else (goto :eof)
)||(set /a line=%line%-1& goto check_similar)
)
goto :eof
ren ============== 汉译英 ==============
:not-letters
title 英汉互译器-汉译英
:: 先提取包含该汉语词汇的第一条记录的行数,然后再查找位于该行之上的纯字母行
:: 则第一次找到的纯字母行就是要查找的英文单词
:: 重复以上过程就可以查找到词义中包含这个汉语词汇的所有英文词汇
echo _________________________________
echo.
echo %input%:
echo.
for /f "tokens=1* delims=:" %%i in ('findstr /nrc:"%input%; " 词库.txt') do (
if not "%%j"=="" set /a line=%%i-2&& call :check_word
)
if "%postil%"=="" goto no-item
echo _________________________________
echo.
pause
goto input_var
:check_word
:: 查找词义中含有%input%的所有英文词汇
set postil=exist
for /f "skip=%line% delims=" %%i in (词库.txt) do (
echo %%i|findstr "^[a-zA-Z]*$">nul &&(echo %%i&&goto :eof)||(
set /a line=%line%-1&& goto check_word
)
)
goto :eof
ren ============== 出错提示 ==============
:no-item
cls
echo _________________________________
echo.
echo %input%:
echo 没有找到该条目!
echo _________________________________
echo.
pause
goto input_var
复制代码
词库.txt 格式举例:
(此行为顶行,不允许出现要查找内容的正文)
China
n.
中国, 瓷器
DOS
n.
磁盘操作系统
name
n.
名字, 名称, 姓名, 名誉
vt.
命名, 提名, 叫出, 指定
adj.
姓名的, 据以取名的
who
pron.
谁, 那...的(人)
复制代码
[
本帖最后由 namejm 于 2007-5-28 12:31 PM 编辑
]
作者:
mackyliu
时间:
2006-12-28 17:37
精华,不用多说.
作者:
xypcmac
时间:
2006-12-29 00:45
不久前在dos联盟就看到你发过了...
作者:
freesoft00
时间:
2006-12-30 21:22
什么都有可能,楼主dos都玩到这种程度了,实在佩服!
作者:
legendwe
时间:
2007-1-3 16:00
高手中的高手
作者:
liurg
时间:
2007-1-5 11:39
批处理到这地步,算是登峰造极了.牛人啊!
作者:
51show
时间:
2007-1-13 17:25
没有测试成功,不好意思
作者:
namejm
时间:
2007-1-13 17:42
请问你是在什么情况下测试不成功的?词库格式没写错吧?
作者:
roclee123
时间:
2007-1-14 01:36
果然是高手,佩服
作者:
lovesj1234
时间:
2007-1-14 16:26
支持,正好要用,谢了。。。
作者:
zqs
时间:
2007-1-15 18:06
高手,真的太强了
作者:
ineverask
时间:
2007-1-23 15:55
我实在的,我真的不知道用,希望楼主详细讲解一下
作者:
bigsna
时间:
2007-1-24 18:09
哪里有词库呢?麻烦说一下
作者:
zhangze
时间:
2007-2-11 21:40
不知道怎么说好了
太高级
作者:
starrysky
时间:
2007-5-28 08:41
谢谢楼主,不过汉译英的功能不能实现……
作者:
namejm
时间:
2007-5-28 12:30
当某个单词有多行解释的时候,汉译英会查不到单词,但是不影响英译汉,因为汉译英的时候,是先查找到解释之后,直接往前跳两行来查询单词,这个牵涉到文本的反序读取,如果每次只往前跳一行的话,效率会大打折扣。为了兼顾效率,目前暂时还找不到可行的方案来解决文本的反序读取问题,可能得借助第三方软件才能完美地解决。
作者:
angelo7930
时间:
2007-6-27 08:15
牛 学习了!!!:L :L
作者:
xzzsky
时间:
2007-6-30 21:11
强!!~~顶!~:hug:
作者:
laozhao
时间:
2007-7-3 16:17
这纯粹是自找麻烦。:lol :lol
作者:
shuaigedw
时间:
2007-7-10 13:55
学习了,支持楼主!!!!
作者:
lojz
时间:
2007-7-11 11:32
太COOL了,BAT的功能还真多.
作者:
怪怪
时间:
2007-7-11 13:57
批处理使用出神入化了,佩服
作者:
libeely
时间:
2007-11-18 12:48
楼主真不错啊,佩服!学习了
作者:
xhj
时间:
2007-11-19 10:37
DOS的高手。
我想对编程有一定的帮助的
作者:
liumingqing
时间:
2007-11-19 11:01
不錯!真是批處理的高手!
作者:
huangjq99
时间:
2007-11-21 17:53
我的怎么不行,输入后没反应?
作者:
zgh8414
时间:
2007-11-21 21:57
牛人可真多啊!o(∩_∩)o...哈哈
作者:
hsyxh
时间:
2008-2-19 20:01
高手就是不一样。谢谢。
作者:
songshf123
时间:
2008-2-20 19:53
制作批处理的那个软件里面就有。
作者:
namejm
时间:
2008-2-20 20:46
是哪个软件?地址或者软件发出来看看。
作者:
hxldn
时间:
2008-3-15 14:19
强中自有强中手,实在是高
作者:
xdguo
时间:
2008-3-15 17:43
不错,有几年没有过DOS了,忘的也差不多了,其实咱们可以从人家这里学习到一些新的思路,
作者:
尘外飘零
时间:
2008-3-17 15:54
已收藏...有空再好好研究..虽然用不着,起码可以拿来学习学习..
作者:
pywuming
时间:
2008-3-27 22:48
我的怎么不行,输入后没反应?
作者:
woyouxiazai
时间:
2008-3-30 18:18
楼主真够强的。
作者:
lj249911023
时间:
2008-12-10 22:10
老大怎么用拉
把两个 文件 放在同一个文件夹下
找不到 数据库啊
批处理版的英汉互译器.rar
2008-12-10 22:10 上传
点击文件名下载附件
下载积分: 无忧币 -2
12.7 KB, 下载次数: 145, 下载积分: 无忧币 -2
作者:
szdopod575
时间:
2008-12-11 09:13
神人啊…楼主。PF…PF
作者:
qi_qi_33
时间:
2008-12-24 18:12
LZ做成这样很强大,支持下LZ,测试下去
作者:
a102135
时间:
2008-12-25 17:21
这是个好东西,正好英语不行!
作者:
shishi09
时间:
2008-12-26 11:31
玩DOS命令玩到这种程度!高手中的高手啊佩服
作者:
lisong
时间:
2009-1-23 20:14
楼主真的太强了!!!!!!!!
作者:
老鼠无敌
时间:
2009-1-31 15:08
非常好.希望弄个自己定义词库,可发生的.谢谢
作者:
WittyHare
时间:
2009-1-31 22:26
这个对我来说没什么用。
作者:
2011hbboyxu
时间:
2011-8-20 03:56
顶一个~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者:
nisa
时间:
2011-8-27 22:17
只能说敬佩....敬礼
作者:
2010zsy
时间:
2011-9-21 15:30
词库在哪?
难道要自己写?
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3