Batch file 创建大型文本文件的批处理脚本

Batch file 创建大型文本文件的批处理脚本,batch-file,batch-processing,Batch File,Batch Processing,我正在尝试创建一个大约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

我正在尝试创建一个大约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行需要作为文件的标题。然后使用for循环增加文件中的“记录”编号,并用足够的数据填充文件,使其达到4 gig。该文件的另一个要求是将每个“记录”放在新行上


正如我所说,当前代码做了我需要它做的事情,我只是在寻找一种方法来显著加快它的速度。

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

而不是打开、追加、关闭、打开、追加、关闭、打开、追加、关闭等。对于23616999次迭代,如果您只打开一次文件,在打开文件的情况下执行整个循环序列,然后在完成后关闭它,那么将大大提高效率。因此,请更改您的语法:

rem;
@cls
@回音
setlocal
对于('chcp')中的/f“tokens=4”%%I,请设置“chcp=%%I”
chcp 65001>NUL
>complete2.txt(
echo“TOA5”、“CR6Series”、“CR6”、“790”、“CR6.Std.02.11”、“CPU:datatypes.CR6”、“26536”、“OneSec”
回回波“时间戳”、“记录”、“记录”、“联通的样本”、“FP2Smpl”、“IEEE4Smpl”、“IEEE4Smpl”、“UIT2SMPL”、“多层面”、“StringSmpl”、“BooleaSMPL”、“Bool8Smpl\1(1)(1)1(1)”、“Bool8SMPL1(2)”、“Bool8SMPL1(4)”、“Bool8SMPL1(5)1(5)”、“Bool8Smpl 1(1(6)”、“1(6)、(1(6)”、、“1(6)、(1(6)、(1(6)、(1(6)个)、1(7)、1(7)、1(7)、1(7)、1(7)、7)、1(7)、1(7)、1(7)、7)、1(7)、1(7)、1(7)、1(7)、1(7)、7)、1(7)、1(7)、7)、1(7)、1(7)、1(7)、7)、7)、7)、1(7)、7)、7)、8 U 2(4)”,“Bool8Smpl_2(5)”,“Bool8Smpl_2(6)”,“Bool8Smpl_2(7)”,“Bool8Smpl_2(8)”,“NsecSmpl”
回显“TS”、“RN”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”
回波“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”Smp“,”
对于(0,123616999)中的/L%%i,请执行echo“2015-05-13 12:11:53,%%i,”大 不束 ロガー 233英寸,-6388,-2.395906E+03452338,-1715056512,“测试管柱”,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
这会将标题放入complete1.txt,然后将一条记录放入complete2.txt,然后将complete2.txt文件的大小加倍25倍,最后将complete2.txt追加到complete1.txt。
在几分钟内生成一个4G文件。

我没有。我对vbscript一点经验都没有。使用批处理文件的部分原因是因为我已经将其用于较小的文件,但我不知道如何使其更好地用于较大的文件。这实际上是我尝试的第一件事。这是一个很好的技巧,但我需要for循环中的每一行都有一个唯一的数字。这就是为什么我在行中使用%%I变量的原因。对不起,我在您的声明中遗漏了这一点。这非常有效。我可以理解对not open append close的修改,但您可以帮助我理解这里发生的事情:对于/f“tokens=4”%%I in('chcp'),请设置“chcp=%%I”chcp 65001>NULThe
for/f
循环将当前代码页捕获到一个变量。下一行将控制台代码页更改为Unicode。这是为了保留Unicode字符,
大 不束 ロガー 233
字符串。脚本的最后一行更改了控制台代码页的备份方式。@如果我的答案是有用的,请考虑将其标记为已接受。来解释为什么这很重要。