中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 如何比较两TXT中的内容 ,并去叫其中一个的相同内容
作者:
标题: 如何比较两TXT中的内容 ,并去叫其中一个的相同内容 上一主题 | 下一主题
hy433124shc
中级用户





积分 201
发帖 75
注册 2007-2-24
状态 离线
『楼 主』:  如何比较两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

2007-3-25 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

搜索 "重复“

2007-3-25 12:32
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  


findstr /i /v /g:2.txt 1.txt


2007-3-26 08:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xtyga
初级用户





积分 23
发帖 13
注册 2007-3-27
状态 离线
『第 4 楼』:  

又学到东东了

2007-3-27 13:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hzzlh
新手上路





积分 13
发帖 7
注册 2007-3-28
状态 离线
『第 5 楼』:  

也有一个类似的问题,三楼的只是把 c:\my\12345.mp3  当作字符串在1.txt中寻找吧, 如果2.txt 中有多行呢 ?
比如:
1.TXT 中有 FIND 的结果
[7458] c:\my\123.mp3
[7456] c:\my\12345.mp3
[7457] c:\my\12.mp3
[7453] c:\my\1.mp3
2.txt 中有
[7458] c:\my\123.mp3
[7456] c:\my\12345.mp3
[7457] c:\my\12.mp3
[7459] c:\my\123456.mp3
想得到一个3.txt,里边是
[7453] c:\my\1.mp3
[7459] 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 ]

2007-3-28 11:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 6 楼』:  

确实是这样,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




我今后在论坛的目标就是做个超级坏人!!!
2007-3-29 00:22
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
hzzlh
新手上路





积分 13
发帖 7
注册 2007-3-28
状态 离线
『第 7 楼』:  

谢谢9527,经测试,可以解决这个问题。
只是这句不太明白

in ('^(more^<1.txt^&more^<2.txt^)^|sort')

查了一下 sort  ,应该是排序吧,那么这句话是什么意思呢?

可不可以解释一下呢。。。

再次感谢!!!

2007-3-29 05:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hzzlh
新手上路





积分 13
发帖 7
注册 2007-3-28
状态 离线
『第 8 楼』:  

自己也尝试着写了一个,代码如下:

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>


想不通啊。。。。。。

2007-3-29 10:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: