[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】如何提高效率 :合并多个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文本,速度就跟不上了。请教高人:有什么更好的办法?有没有第三方工具?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 4# ads350668398


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

TOP

怎么别人的问题都怎么有人来帮忙啊!!我唔 唔

TOP

回复 2# apang

感谢。测试下。

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

返回列表