如何根据字符串将文本文件拆分为多个文件

贾米勒

我有这个文本文件示例:

W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$ END 
W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$ END 
W1M0200 
03/12/2012 00:30 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_002 12 11 136 58 0 0 0 1 
03/12/2012 00:30 SS_003 3 2 213 91 0 0 0 1 
03/12/2012 00:30 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:30 SS_008 0 0 0 0 0 0 0 0 
$ END 
W1M0230 
...

这是我的vbscript代码:

textFile = "C:\data.txt"
saveTo = "C:\"
writeTo = ""
headingPattern = "(W[0-9][A-Z][0-9]*)"

Dim fso, fileFrom, regex
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileFrom = fso.OpenTextFile(textFile)
Set regex = New RegExp

With regex
  .Pattern = headingPattern
  .IgnoreCase = false
  .Global = True
End With

While fileFrom.AtEndOfStream <> True
  line = fileFrom.ReadLine
  Set matches = regex.Execute(line)

  If matches.Count > 0 Then
    writeTo = saveTo & matches(0).SubMatches(0) & ".txt"
    Set fileTo = fso.CreateTextFile(writeTo)
  Else
    fileTo.WriteLine(line)
  End If
Wend

Set fileFrom = Nothing
Set fso = Nothing
Set regex = Nothing

第一个输出文件的文件名将是W1M0130.txt,内容将是下面的行,直到下一个文件名(W1M0200)。文件名均以W开头,内容行均以日期开头,但最后一行始终为$ END。

仅当文本文件中的模式只有一个(V1M0130然后W1M0200然后W1M0230)时,VBScript代码才能正常工作,但是如果文本文件包含两个或多个该模式,我将很难。W1M0130然后另一个W1M0130然后W1M0200然后W1M0230

W1M0130.txt应该类似于:

W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$ END 
W1M0130 
03/12/2012 00:00 SS_001 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_002 15 14 149 64 0 0 0 1 
03/12/2012 00:00 SS_003 4 3 233 100 0 0 0 1 
03/12/2012 00:00 SS_004 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_005 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_006 0 0 0 0 0 0 0 0
2012年3月12日00:00 SS_007 0 0 0 0 0 0 0 0 
03/12/2012 00:00 SS_008 0 0 0 0 0 0 0 0 
$ END
安斯加·威彻斯(Ansgar Wiechers)

CreateTextFile替换现有文件,因此您要替换之前编写的文件。使用OpenTextFile打开文件进行追加。设置第三个参数以True创建文件(如果文件不存在)。

Set fileTo = fso.OpenTextFile(writeTo, 8, True)

另外,遇到一行时,请关闭文件$END

Else
  fileTo.WriteLine(line)
  If line = "$END" Then fileTo.Close
End If

旁注:大多数情况下,将对象设置Nothing毫无意义,因此除非有理由,否则不要这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文本文件批量拆分为出现字符串的文本文件

如何根据文本字符串将CSV文件拆分为多个文件?

击中某个字符串时将文本文件拆分为多个文件

如何在python中将文本文件的字符串拆分为char和number

根据数据将文本文件拆分为Unix中的多个文件

如何根据R中的条件将文本文件拆分为多个.txt文件或数据帧?

根据文件中的单词和特殊字符将文本文件拆分为单词

按特定的字符序列将文本文件拆分为多个文件

如何将一个文本文件拆分为多个文本文件

如何将一个文本文件拆分为多个文本文件?

如何使用awk通过第一个非空白字符将文本文件拆分为记录,并仅打印包含字符串的记录

使用Python将数据文本文件拆分为多个MySQL文本文件

将一个文本文件拆分为多个文本文件 nodejs

如何将一个文本文件拆分为多个* .txt文件?

使用 C# 如何将文本文件拆分为多个文件

如何将多个文本文件中的字符串添加到数组

R如何将具有多个空间的文本文件拆分为数据框

如何从文本文件读取,从整数拆分字符串,然后将整数传递到arraylist?

将文本文件(逐行)拆分为不同的文件

根据日期名称读取多个文本文件,然后全部写入以连接字符串

根据内容中的多个字符串重命名文本文件

如何按字符串拆分文本文件内容?

当行以特定字符开头时,Python 将文本文件拆分为不同的文本文件

根据以整数开头的行将文本文件拆分为多个部分

如何读取文本文件,然后使用python将其拆分为多个文本文件?

如何在UNIX中将分隔符上的文本文件拆分为多个文件?

将字符串保存到文本文件

将字符串打印到文本文件

将字符串写入文本文件