中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 19:59
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 如何比较两TXT中的内容 ,并去叫其中一个的相同内容
楼 主 如何比较两TXT中的内容 ,并去叫其中一个的相同内容 发表于 2007-03-25 11:49 ·  中国 山东 潍坊 电信
中级用户
★★
积分 201
发帖 75
注册 2007-02-24 00:26
UID 80034
性别 男
状态 离线

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
2 发表于 2007-03-25 12:32 ·  中国 甘肃 平凉 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
搜索 "重复“
3 发表于 2007-03-26 08:06 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

findstr /i /v /g:2.txt 1.txt
4 发表于 2007-03-27 13:58 ·  中国 广东 揭阳 电信
初级用户
积分 23
发帖 13
注册 2007-03-27 09:40
UID 83056
性别 男
状态 离线
又学到东东了
5 发表于 2007-03-28 11:17 ·  中国 北京 联通
新手上路
积分 13
发帖 7
注册 2007-03-28 04:34
UID 83136
性别 男
状态 离线
也有一个类似的问题,三楼的只是把 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 ]
6 发表于 2007-03-29 00:22 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
UID 61449
来自 北京
状态 离线
确实是这样,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
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2007-03-29 05:35 ·  中国 北京 联通
新手上路
积分 13
发帖 7
注册 2007-03-28 04:34
UID 83136
性别 男
状态 离线
谢谢9527,经测试,可以解决这个问题。
只是这句不太明白

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

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

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

再次感谢!!!
8 发表于 2007-03-29 10:41 ·  中国 北京 联通
新手上路
积分 13
发帖 7
注册 2007-03-28 04:34
UID 83136
性别 男
状态 离线
自己也尝试着写了一个,代码如下:

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>


想不通啊。。。。。。
论坛跳转: