中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理如何对比并且输出2个文本文件不相同的行!
作者:
标题: 批处理如何对比并且输出2个文本文件不相同的行! 上一主题 | 下一主题
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『楼 主』:  批处理如何对比并且输出2个文本文件不相同的行!

要求,在A.txt 存在的行,在B.txt逐行查找 ,,然后未找到的输出 结果.txt


例:
a.txt 内容
___________________________________
aaa
bbb
vwh
ddd
eee
...
以下省略几千条
____________________________________


b.txt 内容
____________________________________
000
aaa
q23
FFF
ggg
sdd
jjk
yyu
eee
...
以下省略几千条
____________________________________

要求,在A.txt 存在的行,在B.txt逐行查找 ,,然后未找到的输出 结果.txt




[ Last edited by adslcool on 2010-4-21 at 19:44 ]

2010-4-21 19:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『第 2 楼』:  

急用,上千条的记录是在太难处理了

2010-4-21 19:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  


findstr /v /g:a.txt b.txt >a副本.txt




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-21 19:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『第 4 楼』:  

要求,在A.txt 存在的行,在B.txt逐行查找 ,,然后未找到的输出 结果.txt

2010-4-21 19:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
adslcool
新手上路





积分 10
发帖 10
注册 2010-1-21
状态 离线
『第 5 楼』:  

用这个貌似能搞定

@echo off
title  比较文本批处理  %date%
mode con: cols=50 lines=10
color 1f
echo.
echo                      文件对比
echo.
echo               1、过滤文本重复行
echo               2、提取文本重复行
echo               3、比较文本提取重复行
echo               4、比较文本提取不重复
echo.
echo.
set /p wo=(Q退出)请正确选择:
::过滤
if %wo% equ n (goto :q) else (if %wo% gtr 4 (%0) else (if %wo% lss 1 %0))
if %wo% ==1 goto :1
if %wo% ==2 goto :2
if %wo% ==3 goto :3
if %wo% ==4 goto :4
goto :eof
:1
cls
echo                  过滤文本重复行
echo.
set /p wb=请输入要处理的[路径]文本:
set /p wb1=请输入处理后生成的[路径]文本:
for /f "delims=" %%i in (%wb%) do (
    if not defined %%i set %%i=A &  echo %%i>>%wb1%
)
echo                    处理完成
ping /n 2 127.0.1 >nul
goto :eof
:2
cls
setlocal enabledelayedexpansion
echo                  提取文本重复行
echo.
set /p wb=请输入要处理的[路径]文本:
set /p wb1=请输入处理后生成的[路径]文本:
for /f "delims=" %%a in ('sort  %wb%') do (
if %%a equ !b! echo %%a>>%wb1%
set b=%%a)
echo                    处理完成
ping /n 2 127.0.1 >nul
goto :eof
:3
cls
echo                  比较文本提取重复行
echo,
echo  (如有:1.txt 2.txt  提取1.txt在2.txt里出现的行)
echo.
set /p wb1=请输入要处理的[路径]文本1:
set /p wb2=请输入要处理的[路径]文本2:
set /p wb3=请输入处理后生成的[路径]文本:
for /f "delims=" %%c in (%wb1%) do (
findstr "%%c" %wb2%>nul &&echo %%c>>%wb3%)
echo                    处理完成
ping /n 2 127.0.1 >nul
goto :eof
:4
cls
echo                  比较文本提取不重复
echo,
echo  (如有:1.txt 2.txt  提取1.txt在2.txt里没有的行)
echo.
set /p wb1=请输入要处理的[路径]文本1:
set /p wb2=请输入要处理的[路径]文本2:
set /p wb3=请输入处理后生成的[路径]文本:
for /f "delims=" %%c in (%wb1%) do (
findstr "%%c" %wb2%>nul ||echo %%c>>%wb3%)
echo                    处理完成
ping /n 2 127.0.1 >nul
goto :eof
:q
goto :eof


2010-4-21 19:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 6 楼』:  


for /f "delims=" %%i in (a.txt) do set "%%i=="
for /f "delims=" %%i in (b.txt) do if not defined %%i >>c.txt echo.%%i
以a.txt为样本比较,如果b.txt中不存在同样行则输出到c.txt中



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-21 20:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  


for /f "delims=" %%i in (a.txt) do set "%%i=="
for /f "delims=" %%i in (b.txt) do if defined %%i >>c.txt echo.%%i
以a.txt为样本比较,如果b.txt中存在着同样行则输出到c.txt中



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-21 20:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: