在本论坛看到一段代码,是“合并两个文本到新文件并删除重复行”的,那个帖子的介绍如下:
批处理怎样合并两个文本到新文件并删除重复行?
两个文本文件 A.txt 和 B.txt,每个文件内容都只有一列,需合并两个
文件的内容到新文件C.TXT并删除重复行(重复内容只保留一个).示例如下:
A.txt的内容:
111
222
333
444
555
666
B.txt的内容:
444
555
666
777
888
999
合并并删除重复行后的C.txt应该是:
111 ┐
222 │
333 ├────> A.Txt的内容
444 │┐┐
555 │┼┼──>A.TXT和B.TXT共有的重复内容(删除重复,作唯一化)
666 ┘┘│777 ├──>B.TXT的内容
888 │
999 ──┘
即合并追加两文件列表内容,并删除重复行作唯一化处理(红色部分代表重复内容)
代码如下:- @echo off
- set begin=%time%
- cd.>c.txt
-
- REM 方法一,测试花费时间在2毫秒左右
- REM 结果:
- REM 花费时间: 0 小时 0 分钟 0 秒 2 毫秒
- for /f "eol= delims=" %%a in (a.txt b.txt) do @if not defined %%a @(set "%%a=1" & echo %%a >> c.txt)
-
- REM 方法二,测试花费时间在55秒左右
- REM 结果:
- REM 完成,共花费时间: 0 小时 0 分钟 0 秒 54 毫秒
- REM for /f "delims=" %%i in (A.txt B.txt) do (
- REM find /i "%%i" C.txt||echo %%i>>C.txt
- REM )
-
- call :time0 %begin% %time% duration
- cls
- echo 完成,共花费时间: %duration%
- pause
- goto :eof
-
- :time0
- ::计算时间差(封装)
- @echo off&setlocal&set /a n=0&rem code 随风 @bbs.bathome.net
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
- set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
- set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
- set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
- endlocal&set %~3=%ok:-=%&goto :EOF
复制代码 当a.txt和b.txt为小文件时,批处理运行很好;但当两个文件为大文件(a、b文件均为27M)时,显示“命令语法不正确”!
请各位老大看看是什么问题?先谢谢了!!! |