Board logo

标题: 两种方法比较不同的文本,输出结果时都出错!! [打印本页]

作者: Karman     时间: 2008-8-16 19:15    标题: 两种方法比较不同的文本,输出结果时都出错!!

已知三个文本: _learned.txt 储存已学习的单词 _to_check.txt 储存用于对比的单词 _to_learn.txt 储存第二个文本中有而第一个文本中没有的单词 方法一:用findstr语句。
findstr /beivg:_learned.txt _to_check.txt>_to_learn.txt
结果: ① 效率很高 ② 但是最后一行出现了多余的一行字,内容为:%i 方法二:用for语句
for /f %%i in (_to_check.txt) do ( findstr /ix "%%i" _learned.txt >nul if ERRORLEVEL 1 echo %%i>>_to_learn.txt )
结果: ① 效率很低 ② 内容为off或on的行未被查出 =============== 请问: ① 为什么第一种方法效率很高?为什么第二种方法效率很低? ② 为什么第一种方法会出现多余的%i?如何去掉? ③ 为什么第二种方法会查不出off和on? [ Last edited by Karman on 2008-8-16 at 07:17 PM ]

作者: HAT     时间: 2008-8-16 22:23
findstr /b /e /i /v /g:_learned.txt _to_check.txt>_to_learn.txt
我测试的时候,没有发现问题。 能否把你的_learned.txt和_to_check.txt的内容贴出来看看?

作者: Karman     时间: 2008-8-17 00:14    标题: 文件比较长,我上传了!

_to_check.txt _learned.txt 执行结果在这里: _to_learn.txt 注意最后一行。。。。 [ Last edited by Karman on 2008-8-17 at 12:18 AM ]

作者: Karman     时间: 2008-8-17 00:17    标题: 我这里的执行结果


作者: Karman     时间: 2008-8-17 00:31    标题: 我知道原因了,谢谢!

原来我的结果是以下代码产生的——
findstr /beivg:_learned.txt _to_check.txt>_to_learn.txt ::@for /f %%i in (_to_check.txt) do ( findstr /ix "%%i" _learned.txt >nul if ERRORLEVEL 1 echo %%i>>_to_learn.txt )
其中
if ERRORLEVEL 1 echo %%i>>_to_learn.txt
产生了多余的
%i
这一行!

作者: HAT     时间: 2008-8-17 11:59
下次记得在顶楼把代码贴全,呵呵。