Board logo

标题: [文本处理] 【已解决】如何提高效率 :合并多个txt文档中对应的行 [打印本页]

作者: 思想之翼    时间: 2014-10-26 15:20     标题: 【已解决】如何提高效率 :合并多个txt文档中对应的行

本帖最后由 思想之翼 于 2014-10-28 09:43 编辑

下述bat代码,是合并多个txt文档中对应的行,即
1.txt为
01
02
30
...
25

2.txt为
02
03
04
...
35

...

21.txt为
70
80
90
...
88

这21个txt文本 合并对应的行,结果为
01 02...70
02 03...80
03 40...90
...  ...   ...
25 35   88

@echo off&setlocal enabledelayedexpansion
set 文件数=10000
for /l %%a in (1,1,%文件数%) do (
    for /f "delims=" %%i in (D:/数据3/%%a.txt) do (
        set /a n+=1
        for %%a in (!n!) do set "#%%a=!#%%a! %%i"
    )
    set /a m=n,n=0
)
(for /l %%a in (1,1,%m%) do echo,!#%%a:~1!)>D:/数据3/all.txt

现在欲合并10000个txt文本,速度就跟不上了。请教高人:有什么更好的办法?有没有第三方工具?
作者: apang    时间: 2014-10-26 22:39

本帖最后由 apang 于 2014-10-27 21:19 编辑

试试vbs,感觉可能会快一点
  1. On Error Resume Next
  2. fileNum = 100
  3. Max = 0 : ReDim ar(fileNum)
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. For i = 1 to fileNum
  6.         Set f = fso.OpenTextFile("D:\数据3\" & i & ".txt")
  7.         ar(i) = Split(RegEx(f.ReadAll), vbCrLf)
  8.         If UBound(ar(i)) > Max Then Max = UBound(ar(i))
  9.         f.Close : Set f = Nothing
  10. Next
  11. For i = 0 to Max
  12.         s = ""
  13.         For j = 1 to fileNum
  14.                 s = s & " " & ar(j)(i)
  15.         Next
  16.         fso.OpenTextFile("D:\数据3\all.txt", 8, true).WriteLine Mid(s, 2)
  17. Next
  18. MsgBox "OK"
  19. Function RegEx(txt)
  20.         Set re = New RegExp
  21.         re.Pattern = "^(\s*\n)+|(\s*\n)+$"
  22.         re.Global = true
  23.         txt = re.Replace(txt, "")
  24.         re.Pattern = "(\s*\n)+"
  25.         RegEx = re.Replace(txt, vbCrLf)
  26. End Function
复制代码

作者: 思想之翼    时间: 2014-10-27 09:28

回复 2# apang

感谢。测试下。
作者: ads350668398    时间: 2014-10-27 18:45

怎么别人的问题都怎么有人来帮忙啊!!我唔 唔
作者: apang    时间: 2014-10-27 21:24

回复 4# ads350668398


    很可能是你把问题表述得模糊不清




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2