
批處理合并兩個(gè)大文件并刪除重復(fù)行時(shí)為何無(wú)法運(yùn)行在本論壇看到一段代碼,是“合并兩個(gè)文本到新文件并刪除重復(fù)行”的,那個(gè)帖子的介紹如下:批處理怎樣合并兩個(gè)文本到新文件并刪除重復(fù)行??jī)蓚€(gè)文本文件 A.txt 和 B.txt,每個(gè)文件內(nèi)容都只有一列,需合并兩個(gè)文件的內(nèi)容到新文件C.TXT并刪除重復(fù)行(重復(fù)內(nèi)容只保留一個(gè)).示例如下:A.txt的內(nèi)容:111 222333444555666B.txt的內(nèi)容:444555666777888999合并并刪除重復(fù)行后的C.txt應(yīng)該是:111 ┐222 │333 ├────> A.Txt的內(nèi)容444 │┐┐555 │┼┼──>A.TXT和B.TXT共有的重復(fù)內(nèi)容(刪除重復(fù),作唯一化)666 ┘┘│777 ├──>B.TXT的內(nèi)容888 │999 ──┘即合并追加兩文件列表內(nèi)容,并刪除重復(fù)行作唯一化處理(紅色部分代表重復(fù)內(nèi)容)代碼如下:
當(dāng)a.txt和b.txt為小文件時(shí),批處理運(yùn)行很好;但當(dāng)兩個(gè)文件為大文件(a、b文件均為27M)時(shí),顯示“命令語(yǔ)法不正確”!請(qǐng)各位老大看看是什么問(wèn)題?先謝謝了!!!nclick="copycode($('code0'));">復(fù)制代碼
- @echo off
- set begin=%time%
- cd.>c.txt
- REM 方法一,測(cè)試花費(fèi)時(shí)間在2毫秒左右
- REM 結(jié)果:
- REM 花費(fèi)時(shí)間: 0 小時(shí) 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 方法二,測(cè)試花費(fèi)時(shí)間在55秒左右
- REM 結(jié)果:
- REM 完成,共花費(fèi)時(shí)間: 0 小時(shí) 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 完成,共花費(fèi)時(shí)間: %duration%
- pause
- goto :eof
- :time0
- ::計(jì)算時(shí)間差(封裝)
- @echo off&setlocal&set /a n=0&rem code 隨風(fēng) @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% 小時(shí) %f% 分鐘 %m% 秒 %n% 毫秒
- endlocal&set %~3=%ok:-=%&goto :EOF

