标题: 如何比较两个文本内容的差别
[打印本页]
作者: hhh246
时间: 2006-8-31 02:07
标题: 如何比较两个文本内容的差别
假如 1.txt 内容 如果在2.txt 中有相同替换为空白
1.txt
c:\windows
c:\windows\12.txt
2.txt
c:\windows
c:\windows\21.txt
c:\windows\123.txt
c:\my doc
输出为 3.txt
c:\windows\123.txt
c:\my doc
[
Last edited by namejm on 2007-2-5 at 10:24 AM ]
作者: namejm
时间: 2006-8-31 02:38
以前有过类似的讨论帖子,一下子找不到了,干脆把以前发的完整代码发出来,你可以借鉴一下思路:
@echo off
:: 比较A文件夹和B文件夹下文件名的异同(A和B文件夹下均无子目录)
:: 如果有不同,A文件夹中不同的写入a.txt,B文件夹中不同的写入b.txt
:: 相同部分的文件名写入c.txt
cd.>a.txt
cd.>b.txt
cd.>c.txt
dir /a-d /b "A文件夹的路径">list_a.txt
dir /a-d /b "B文件夹的路径">list_b.txt
for /f "delims=" %%i in (list_a.txt) do (
find "%%i" list_b.txt>nul 2>nul && echo %%i>>c.txt || echo %%i>>a.txt
)
for /f "delims=" %%i in (list_b.txt) do (
find "%%i" list_a.txt>nul 2>nul || echo %%i>>b.txt
)
del /q list_a.txt>nul 2>nul
del /q list_b.txt>nul 2>nul
start a.txt
start b.txt
start c.txt
作者: namejm
时间: 2006-8-31 02:45
考虑到你是新手,一下子难以理解2楼的完整代码,针对你这个问题,为你量身定做一段代码吧:
@echo off
cd.>3.txt
for /f "tokens=*" %%i in (2.txt) do (
find "%%i" 1.txt || >>3.txt echo %%i
)
start 3.txt
作者: namejm
时间: 2006-8-31 08:32
今天闲着没事,把3楼的代码拉出来玩了一把,结果让我大吃一惊:3.txt的内容是
c:\windows\21.txt
c:\windows\123.txt
c:\my doc
而非楼主所说的
c:\windows\123.txt
c:\my doc
。
我的妈呀,又在阴沟里翻船了。唉,现在的楼主真难伺候呀。
作者: hhh246
时间: 2006-8-31 15:36
谢谢各位,但我试过用这种方法但有的不能完成替换的比如最后名是LNK,
for /f "delims==" %%i in (1.txt) do findstr /l /i /x "%%i" "2.txt" ||if %errorlevel% == 0 echo %%i >>3.txt
作者: vkill
时间: 2006-8-31 15:39
>>3.txt echo %%i
楼上这个倒过来写也可以啊,为什么?
作者: hhh246
时间: 2006-9-4 13:09
目前还没有人能解决呀,
作者: namejm
时间: 2006-9-4 13:31
Quote: |
Originally posted by hhh246 at 2006-9-4 13:09:
目前还没有人能解决呀, |
|
真的吗?
你动手测试了上面的代码了吗?你能保证你在顶楼的表述没有错误吗?
作者: hhh246
时间: 2006-9-8 08:52
for /f "delims==" %%i in (1.log) do (
find /i "%%i" "2.log" || echo %%i>>b.txt
)
可以了,但速度相当慢,谁能写出多线程的吗?
作者: namejm
时间: 2006-9-8 11:24
Quote: |
Originally posted by hhh246 at 2006-9-8 08:52:
for /f "delims==" %%i in (1.log) do (
find /i "%%i" "2.log" || echo %%i>>b.txt
)
可以了,但速度相当慢,谁能写出多线程的吗? |
|
速度慢吗?除非你处理的是上W行的文本。
多线程?呵呵,CMD是单任务模式的,不可能实现多线程。
[
Last edited by namejm on 2006-9-8 at 11:26 ]
作者: 3742668
时间: 2006-9-11 00:08
findstr /v /x /g:1.txt 2.txt
作者: namejm
时间: 2006-9-18 21:19
3742668 版主的代码极度简洁高效,PF。