
【已解決】BAT如何提高多個文本數據交叉合并的運行速度最后由 思想之翼 于 -2-25 20:53
上述代碼,是將2個文本的數據進行交叉合并,運行速度過于緩慢,若想提速,不知道如何優化,懇望得到幫助。2個文本的數據進行交叉合并的具體過程如下(只需要最后的結果,分步過程不需要顯示):D:/數據1/內有若干txt文本:001_1.txt001_2.txt002_1.txt002_2.txt...210_1.txt210_2.txt每個txt文本內有多行數據,行數不定,每行數據在0-9之間,個數不定,最多7位數,各數字從小到大排列(數據0永遠排列在最后一位)比如:357901235791460245678934567127034568257890先將001_1.txt與001_2.txt內的數據進行合并,過程為:001_1.txt內第1行數據與001_2.txt內的第1、2、3、4、5...行合并001_1.txt內第2行數據與001_2.txt內的第1、2、3、4、5...行合并...001_1.txt內最后一行數據與001_2.txt內的第1、2、3、4、5..行合并合并后每行數據,排序,去除重復數字,刪除少于或多于7個數字的組合,只保留7個數字的組合。比如合并后的數據為:79015914024945,去除重復數字,得到:1245790保留下來的多行7個數字的組合,若有重復,去除重復。比如:1236790123679034567893456789去除重復數據,得到:12367903456789每行數據取反集(0-9數值之間的未出現數),并將取反集后的數據從小到大排列(數據0永遠排列在最后一位)。比如:1245790的反集是:3683456789的反集是:120將這些數據豎排,寫入D:/數據2/內的文本,文本名稱為001.txt以上是001_1.txt與001_2.txt的合并。之后,將002_1.txt與002_2.txt合并,得到的數據,豎排,寫入D:/數據2/內,文本名稱為002.txt將003_1.txt與003_2.txt合并,得到的數據,豎排,寫入D:/數據2/內,文本名稱為003.txt...將210_1.txt與210_2.txt合并,得到的數據,豎排,寫入D:/數據2/內,文本名稱為210.txtnclick="copycode($('code0'));">復制代碼
- @echo off
- for /l %%i in (1001 1 1210) do (
- set s=%%i
- setlocal enabledelayedexpansion
- set s=!s:~1!
- (for /f %%a in (!s!_1.txt) do (
- for /f %%b in (!s!_2.txt) do (
- set str=%%a%%b
- set n1=&set n2=
- for %%l in (1 2 3 4 5 6 7 8 9 0) do (
- if !str:%%l=! neq !str! (
- set n1=!n1!%%l
- ) elseset n2=!n2!%%l
- )
- set n=!n1!A9876543210
- if !n:~10,1! == 3 (
- if not defined _!n1! (
- set _!n1!=0&echo,!n1!
- )
- ) else if !n:~10,1! == 7 (
- if not defined _!n2! (
- set _!n2!=0&echo,!n2!
- )
- )
- )
- ))>d:數據2!s!.txt
- endlocal
- )
- pause

