用于创建大文本文件的批处理脚本
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 文件。
我正在尝试创建一个大约 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 文件。