用于创建大文本文件的批处理脚本

Batch script to create large text file

我正在尝试创建一个大约 4 gig 的文本文件。我使用批处理脚本完成了此操作,但创建过程花费了大约 7 个小时,因此我认为必须有更好的方法来完成此操作。这是我现在使用的代码:

echo "TOA5","CR6Series","CR6","790","CR6.Std.02.11","CPU:datatypes.CR6","26536","OneSec" > complete2.txt
echo "TIMESTAMP","RECORD","UnicodeSmpl","FP2Smpl","IEEE4Smpl","UINT2Smpl","LongSmpl","StringSmpl","BooleanSmpl","Bool8Smpl_1(1)","Bool8Smpl_1(2)","Bool8Smpl_1(3)","Bool8Smpl_1(4)","Bool8Smpl_1(5)","Bool8Smpl_1(6)","Bool8Smpl_1(7)","Bool8Smpl_1(8)","Bool8Smpl_2(1)","Bool8Smpl_2(2)","Bool8Smpl_2(3)","Bool8Smpl_2(4)","Bool8Smpl_2(5)","Bool8Smpl_2(6)","Bool8Smpl_2(7)","Bool8Smpl_2(8)","NsecSmpl" >> complete2.txt
echo "TS","RN","","","","","","","","","","","","","","","","","","","","","","","","" >> complete2.txt
echo "","","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp" >> complete2.txt
for /L %%i in (0,1,23616999) do echo "2015-05-13 12:11:53",%%i,"大 不束 ロガー 233",-6388,-2.395906E+034,52338,-1715056512,"Test string",0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,"2015-05-13 12:11:53.078" >> complete2.txt

需要前 4 行作为文件的 header。然后 for 循环用于增加文件中的 "record" 数字,并用足够的数据填充文件以使其成为 4 gig。此文件的另一个要求是每个 "record" 都在一个新行上。

就像我说的那样,当前代码完成了我需要它做的事情,我只是在寻找一种显着加快速度的方法。

您是否考虑过使用具有 FileSystemObject 对象的 VBScript?

而不是open,append,close,open,append,close,open,append,close等23616999次迭代,打开文件一次,执行整个循环会大大提高效率打开文件的顺序,然后在完成后关闭它。这样改变你的语法:

rem;
@cls
@echo off
setlocal

for /f "tokens=4" %%I in ('chcp') do set "chcp=%%I"
chcp 65001 >NUL

>complete2.txt (
    echo "TOA5","CR6Series","CR6","790","CR6.Std.02.11","CPU:datatypes.CR6","26536","OneSec"
    echo "TIMESTAMP","RECORD","UnicodeSmpl","FP2Smpl","IEEE4Smpl","UINT2Smpl","LongSmpl","StringSmpl","BooleanSmpl","Bool8Smpl_1(1)","Bool8Smpl_1(2)","Bool8Smpl_1(3)","Bool8Smpl_1(4)","Bool8Smpl_1(5)","Bool8Smpl_1(6)","Bool8Smpl_1(7)","Bool8Smpl_1(8)","Bool8Smpl_2(1)","Bool8Smpl_2(2)","Bool8Smpl_2(3)","Bool8Smpl_2(4)","Bool8Smpl_2(5)","Bool8Smpl_2(6)","Bool8Smpl_2(7)","Bool8Smpl_2(8)","NsecSmpl"
    echo "TS","RN","","","","","","","","","","","","","","","","","","","","","","","",""
    echo "","","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp"
    for /L %%i in (0,1,23616999) do echo "2015-05-13 12:11:53",%%i,"大 不束 ロガー 233",-6388,-2.395906E+034,52338,-1715056512,"Test string",0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,"2015-05-13 12:11:53.078"
)

chcp %chcp% >NUL

使用指数幂

echo "TOA5","CR6Series","CR6","790","CR6.Std.02.11","CPU:datatypes.CR6","26536","OneSec" > complete1.txt
echo "TIMESTAMP","RECORD","UnicodeSmpl","FP2Smpl","IEEE4Smpl","UINT2Smpl","LongSmpl","StringSmpl","BooleanSmpl","Bool8Smpl_1(1)","Bool8Smpl_1(2)","Bool8Smpl_1(3)","Bool8Smpl_1(4)","Bool8Smpl_1(5)","Bool8Smpl_1(6)","Bool8Smpl_1(7)","Bool8Smpl_1(8)","Bool8Smpl_2(1)","Bool8Smpl_2(2)","Bool8Smpl_2(3)","Bool8Smpl_2(4)","Bool8Smpl_2(5)","Bool8Smpl_2(6)","Bool8Smpl_2(7)","Bool8Smpl_2(8)","NsecSmpl" >> complete1.txt
echo "TS","RN","","","","","","","","","","","","","","","","","","","","","","","","" >> complete1.txt
echo "","","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp","Smp" >> complete1.txt
echo "2015-05-13 12:11:53",%%i,"大 不束 ロガー 233",-6388,-2.395906E+034,52338,-1715056512,"Test string",0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,"2015-05-13 12:11:53.078" > complete2.txt
for /L %%i in (0,1,25) do type complete2.txt >> complete2.txt
type complete2.txt >> complete1.txt

这会将header放入complete1.txt,然后将一条记录放入complete2.txt,然后将complete2.txt文件的大小加倍25次,最后追加complete2.txt 到 complete1.txt.

在几分钟内生成一个 4 gig 文件。