如果文件名中的字符串匹配,则将多个.TXT文件合并为一个

时间:2019-05-08 10:13:14

标签: vbscript

有人可以帮助我解决目录中有文件列表的问题吗?如果文件名中的字符串模式匹配,我想合并文件吗?

AAAL_555A_ORANGE1_F190404.TXT
AAAL_555A_ORANGE2_F190404.TXT
AAAL_555A_ORANGE3_F190404.TXT
AAAL_555A_ORANGE4_F190404.TXT
AAAL_555A_MANGO_F190404.TXT
AAAL_555A_MANGO2_F190404.TXT
AAAL_555B_APPLE_F190404.TXT
AAAL_555B_ORANGE_F190404.TXT
AAAL_555B_Orange_F190404.TXT

如果ViewController的第二部分和XIB的第三部分组成,那么所有Oranges内容文件都将合并为一个文件名为filename='555A'的文件。

如果ORANGE的第二部分和AAAl_555A_ORANGE.txt的第三部分组成,那么所有Oranges内容文件都将合并为一个文件名为filename='555B'的文件。

如果ORANGE的第二部分和AAAl_555B_ORANGE.txt的第三部分组成,那么所有Oranges内容文件将合并为一个文件名,文件名为filename='555A',依此类推。

MANGO

1 个答案:

答案 0 :(得分:1)

FileSystemObject.OpenTextFile()方法的参数使您可以指定要a)在文件不存在的情况下创建文件,以及b)在文件末尾附加新内容。

在您的特定情况下,可能看起来像这样:

Set re = New RegExp
re.Pattern = "\d+$"

For Each objFile In colfiles
    a = Split(objFile.Name, "_")

    'Construct the basename of the output file from the elements of the split
    'input filename. Use a regular expression replacement to remove trailing
    'digits from the third element.
    basename = a(0) & "_" & a(1) & "_" & re.Replace(a(2), "")
    filename = basename & ".txt"

    If Left(objFile.Name, Len(basename)) = basename Then
        Set outFile = ObjFSO.OpenTextFile(filename, 8, True)
        Set inFile  = ObjFSO.OpenTextFile(objFile.Path)
        Do Until inFile.AtEndOfStream
            outFile.WriteLine inFile.ReadLine
        Loop
        inFile.Close
        outFile.Close
    End If
Next

要省略输入文件开头或结尾的行,请参见this answer of mine到类似的问题。