用vbscript合并多个文本文件的代码

2019-01-16 09:43:06王旭


我们知道您在想什么:不错,尽管上述脚本可以实现目的,但问题是您必须“事先”知道文件夹 C:Logs 中所有文件的名称。那么,编写一个脚本以获取 C:Logs 中的所有文件并将它们合并在一起,岂不是更好?嗯,我们还未曾这样想过。您所说的是不是类似下面的脚本:

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutputFile = objFSO.CreateTextFile("output.txt")

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootcimv2")

Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:Logs'} Where " _
        & "ResultClass = CIM_DataFile")

For Each objFile In FileList
    Set objTextFile = objFSO.OpenTextFile(objFile.Name, ForReading) 
    strText = objTextFile.ReadAll
    objTextFile.Close
    objOutputFile.WriteLine strText
Next

objOutputFile.Close

实际上,我们在此处执行的全部操作是获取 C:Logs 文件夹中所有文件的集合;这是通过以下 WMI Associators of 查询实现的:

Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:Logs'} Where " _
        & "ResultClass = CIM_DataFile")

在获取这一集合后,我们可以立即使用 For-Each 循环打开每个文件并读入其中的文本(使用 ReadAll 方法,与上文中的代码相同)。然后关闭该文件,将文本附加到输出文件的末尾。接下来再执行一次循环,对集合中的下一个文件执行相同的过程。只需片刻,就可以将 C:Logs 中所有文件的所有文本提取出来,并将它们合并为一个名为 output.txt 的新文件。整个过程就是这么简单。

您可能感兴趣的文章:

用VBScript写合并文本文件的脚本用vbs分割与合并文本文件的代码