标题: 如何比较两TXT中的内容 ,并去叫其中一个的相同内容
[打印本页]
作者: hy433124shc
时间: 2007-3-25 11:49
标题: 如何比较两TXT中的内容 ,并去叫其中一个的相同内容
如
1.TXT 中有 FIND 的结果
[7458] c:\my\123.mp3
[7456] c:\my\12345.mp3
2.txt 中有
[7458] c:\my\123.mp3
现我想得到1.TXT 内容为
[7456] c:\my\12345.mp3
作者: vkill
时间: 2007-3-25 12:32
搜索 "重复“
作者: lxmxn
时间: 2007-3-26 08:06
findstr /i /v /g:2.txt 1.txt
作者: xtyga
时间: 2007-3-27 13:58
又学到东东了
作者: hzzlh
时间: 2007-3-28 11:17
也有一个类似的问题,三楼的只是把 c:\my\12345.mp3 当作字符串在1.txt中寻找吧, 如果2.txt 中有多行呢 ?
比如:
1.TXT 中有 FIND 的结果
c:\my\123.mp3
c:\my\12345.mp3
c:\my\12.mp3
c:\my\1.mp3
2.txt 中有
c:\my\123.mp3
c:\my\12345.mp3
c:\my\12.mp3
c:\my\123456.mp3
想得到一个3.txt,里边是
c:\my\1.mp3
c:\my\123456.mp3
该怎么实现呢?
高手指教。。。。
又:
翻了以前的一些帖子,其中有个删除相同行的,个人感觉很好,可是怎么也想不出该怎样用在这里,代码如下:
@echo off
echo 正在查找文本相同行,请等待.....
(echo 清除重复行后的文件内容:& echo.)>str_.txt
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do (
if not defined %%i set %%i=A & echo %%i>>str_.txt)
echo 清理完毕,清理后的文件保存在:str_.txt
pause>nul
Last edited by hzzlh on 2007-3-27 at 10:24 PM ]
作者: 9527
时间: 2007-3-29 00:22
确实是这样,FINDSTR处理这样的效果确实不太理想,先给你个暂时的方案吧,试试下面的代码
@echo off&setlocal
for /f "delims=" %%a in ('^(more^<1.txt^&more^<2.txt^)^|sort') do call:ppp "%%a"
<nul,set/p=%a%
goto:eof
:ppp
if not defined a (set a=%1&goto:eof)
if %a% equ %1 (set "a="&goto:eof) else (<nul,set/p=%a%&echo/)
set a=%1
goto:eof
作者: hzzlh
时间: 2007-3-29 05:35
谢谢9527,经测试,可以解决这个问题。
只是这句不太明白
in ('^(more^<1.txt^&more^<2.txt^)^|sort')
查了一下 sort ,应该是排序吧,那么这句话是什么意思呢?
可不可以解释一下呢。。。
再次感谢!!!
作者: hzzlh
时间: 2007-3-29 10:41
自己也尝试着写了一个,代码如下:
echo 重的:>1.txt
echo 非重:>2.txt
for /f %%i in (test1.txt) do call:find &&i
pause
:find
set %%i=%1
for /f %%j in (test2.txt) do(
if findstr %1 echo %1>>1.txt else echo %%j>>2.txt
)
可是总是报错,不知哪里错了呢?
D:\bat>new
D:\bat>echo 重的: 1>1.txt
D:\bat>echo 非重: 1>2.txt
D:\bat>for /F %i in (test1.txt) do call:find && i
D:\bat>call:find && i
D:\bat>set %i=
此时不应有 do(。
D:\bat>for /f %j in (test2.txt) do(
D:\bat>
想不通啊。。。。。。