标题: [文本处理] [已解决]批处理如何查找2个文本,在第三个文本显示不重复行? [打印本页]
作者: q120072949 时间: 2011-1-6 19:51 标题: [已解决]批处理如何查找2个文本,在第三个文本显示不重复行?
1.txt:
a
aa
b
bb
c
....
2.txt
a
ab
b
bc
c
...
批处理要达到的效果:
1.运行批处理后可以把2个文本里不重复的行写入到3.txt
aa
ab
bb
bc
2.把2个文本里重复的行写入到4.txt
a
b
c
也就是说我要对比出2个文本里互相不重复的行,然后按照重复跟不重复的分别输出到2个.txt
[ 本帖最后由 q120072949 于 2011-1-9 19:53 编辑 ]
作者: hanyeguxing 时间: 2011-1-6 20:37
- findstr /i /v /x /g:1.txt 2.txt>3.txt
- findstr /i /v /x /g:2.txt 1.txt>>3.txt
- findstr /i /x /g:1.txt 2.txt>4.txt
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-6 20:41 编辑 ]
作者: andyrave 时间: 2011-1-6 20:40
- @echo off
-
- :choose
- echo.&echo 请选择操作类型:
- echo.&echo 1 - 比较两个文本并将相同内容输出
- echo.&echo 2 - 比较两个文本并将不同内容输出
- echo.&echo 3 - 两个文本内容合并后将相同内容只保留一个输出
- echo.&echo 0 - 退出批处理
-
- echo.&set choose=&set /p choose=选择要执行的序号:
- if %choose% equ 0 exit
- for /l %%a in (1,1,3) do if %choose% equ %%a (
- call :setfile
- call :%%a
- cls&echo.&echo 处理完毕!继续选择操作类型:
- goto :choose
- )
- cls&echo.&echo 输入的序号有误,请重新选择!&goto :choose
-
- :setfile
- echo.&set file1=&set /p file1=请输入要比较的第一个文件名:
- set file1=%file1:"=%
- echo.&set file2=&set /p file2=请输入要比较的第二个文件名:
- set file2=%file2:"=%
- echo.&set outfile=&set /p outfile=请输入最后结果保存的文件名:
- set outfile=%outfile:"=%
- goto :eof
-
- :1
- findstr /i /g:"%file1%" "%file2%">"%outfile%"
- goto :eof
-
- :2
- call :1
- findstr /i /v /g:"%outfile%" "%file1%">"%outfile%.bak"
- findstr /i /v /g:"%outfile%" "%file2%">>"%outfile%.bak"
- sort "%outfile%.bak">"%outfile%"
- del "%outfile%.bak"
- goto :eof
-
- :3
- (type "%file1%"&echo.&type "%file2%")>"%outfile%"
- cd.>"%outfile%.bak"
- for /f "delims=" %%i in ('type "%outfile%"') do (if not defined %%i set %%i=A & echo %%i>>"%outfile%.bak")
- move /y "%outfile%.bak" "%outfile%"
- goto :eof
复制代码
作者: q120072949 时间: 2011-1-9 19:52
2楼寒夜版主的代码很简洁强大,我采纳了,谢谢!
3楼的代码优化了下,也不错,谢谢!
作者: sshlovewp 时间: 2011-8-26 16:44
2楼的代码对汉字就不灵了。一直在找对文本中有汉字的解决方法,但一直没有找到。
作者: cjiabing 时间: 2011-8-26 16:49
回复 5# sshlovewp
干嘛人家电脑得,而你的电脑不得?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |