有人可以帮助我解决目录中有文件列表的问题吗?如果文件名中的字符串模式匹配,我想合并文件吗?
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
答案 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到类似的问题。