我创建了一个Windows批处理文件来读取我的文件夹中的所有大约10000 * .txt文件(包含一个标题和两个标签分隔的数据列,2048行),通过连接它们的第二列创建一个文本文件表。但我的方法似乎很慢
为此,我使用for循环来完成命令(' TYPE!fileName!')和(' TYPE!fileName!^ | FINDSTR" ^ [0 -9]"&#39)。我首先阅读* .txt文件的第二列。然后将其存储在带有for循环的临时文件中:
SET firstLine=true
FOR /F "delims= tokens=2" %%G IN ('TYPE !fileName! ^| FINDSTR "^[0-9]"') DO (
IF !firstLine!==true (
ECHO %%G > !tmpFile!
SET firstLine=false
) ELSE (
ECHO %%G >> !tmpFile!
)
)
之后我将currentTable与临时文件一起读出并写出currentTable文件,附加一列
SET firstLine=true
(
FOR /F "tokens=*" %%G IN ('TYPE !currenTable!') DO (
SET /P line=
IF !firstLine!==true (
ECHO %%G !line! > !currenTable!
SET firstLine=false
) ELSE (
ECHO %%G !line! >> !currenTable!
)
)
)<!tmpFile!
修改(由于评论)
数据文件如下所示:
some header
col1 col2
12.3 1.2E3
12.4 1.3E3
12.5 1.4E3
我想要的就是这个
some header
col1File1 col2File1 col2File2 col2File3 col2File4 ...
12.3 1.2E3 2.2E3 3.2E3 4.2E3 ...
12.4 1.3E3 2.3E3 3.3E3 4.3E3 ...
12.5 1.4E3 2.4E3 3.4E3 4.4E3 ...
在两种情况下,列都用制表符分隔。
问题:
1)&#39; TYPE&#39;命令(特别是结合&#39; FINDSTR&#39;命令)似乎很慢。是否有一些技巧可以更快地读取文件?
编辑:仅使用&#39; FINDSTR&#39;并且&#39; FOR&#39; -loop直接通过文件,脚本性能似乎滞后于文件写入过程(由于附加)。任何避免附加的建议(并避免最大可变大小的麻烦)?
2)是否有可能避免编写临时文件?就像是否有一些虚拟流你可以写入并随后选择?我在网上找不到这样的东西。