标题: [文本处理] 【已解决】如何提高效率 :合并多个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,感觉可能会快一点- On Error Resume Next
- fileNum = 100
- Max = 0 : ReDim ar(fileNum)
- Set fso = CreateObject("Scripting.FileSystemObject")
-
- For i = 1 to fileNum
- Set f = fso.OpenTextFile("D:\数据3\" & i & ".txt")
- ar(i) = Split(RegEx(f.ReadAll), vbCrLf)
- If UBound(ar(i)) > Max Then Max = UBound(ar(i))
- f.Close : Set f = Nothing
- Next
-
- For i = 0 to Max
- s = ""
- For j = 1 to fileNum
- s = s & " " & ar(j)(i)
- Next
- fso.OpenTextFile("D:\数据3\all.txt", 8, true).WriteLine Mid(s, 2)
- Next
-
- MsgBox "OK"
-
- Function RegEx(txt)
- Set re = New RegExp
- re.Pattern = "^(\s*\n)+|(\s*\n)+$"
- re.Global = true
- txt = re.Replace(txt, "")
- re.Pattern = "(\s*\n)+"
- RegEx = re.Replace(txt, vbCrLf)
- 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 |