|
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
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0"><img src="images/smilies/face-raspberry.png" align="absmiddle" border="0"><img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">
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 来自 在地狱中仰望天堂
状态 离线
|
|
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 来自 在地狱中仰望天堂
状态 离线
|
|
2010-4-21 20:17 |
|
|
Hanyeguxing
银牌会员
     正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2010-4-21 20:21 |
|