楼 主
如何比较两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>
想不通啊。。。。。。
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正