本帖最后由 aloha20200628 于 2024-10-30 15:21 编辑
根据45楼提供的实况数据样本data.txt和1.txt,用34楼的新算法重写了如下代码,先用 jscript 把 1.txt(共有10512组匹配数,94612个字符)分成了总共12行的临时文件 0.1,其中每行至多 900 组匹配数不超过8K字符量(尽量趋近 findstr 命令行参数长度极限),再用以下代码跑一遍,其结果虽与24楼代码的运行结果完全相同,但提速极为显著,用时不足2秒,而24楼代码用时约2分钟...
| @set @x=1 /* &@echo off | | type "1.txt"|cscript /nologo /e:jscript "%~f0">0.1 | | for /f "delims=" %%a in (0.1) do ( | | findstr /lv "%%a" data.txt>0.0 | | move /y 0.0 data.txt | | )>nul 2>nul | | del/q "0.1" &pause&exit/b */ | | a=WSH.stdin.readall().split(' '); | | for (n=0,l=a.length; n<l; n+=900) | | WSH.echo(a.slice(n,n+900).join(' ')); | | WSH.quit();COPY |
|