标题:
两种方法比较不同的文本,输出结果时都出错!!
[打印本页]
作者:
Karman
时间:
2008-8-16 19:15
标题:
两种方法比较不同的文本,输出结果时都出错!!
已知三个文本:
_learned.txt 储存已学习的单词
_to_check.txt 储存用于对比的单词
_to_learn.txt 储存第二个文本中有而第一个文本中没有的单词
方法一:用findstr语句。
Quote:
findstr /beivg:_learned.txt _to_check.txt>_to_learn.txt
结果:
① 效率很高
② 但是最后一行出现了多余的一行字,内容为:%i
方法二:用for语句
Quote:
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
CODE:
[Copy to clipboard]
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
标题:
我这里的执行结果
_to_learn.txt
作者:
Karman
时间:
2008-8-17 00:31
标题:
我知道原因了,谢谢!
原来我的结果是以下代码产生的——
Quote:
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
)
其中
Quote:
if ERRORLEVEL 1 echo %%i>>_to_learn.txt
产生了多余的
Quote:
%i
这一行!
作者:
HAT
时间:
2008-8-17 11:59
下次记得在顶楼把代码贴全,呵呵。
欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/)
Powered by Discuz! 2.5