Combine multiple text files

By | July 17, 2007

An engineer asked me to create a script that would take ASCII files and combine them for use with a piece of software. The names of the files were all different, and they needed to sort the data by creation/ modification date. So, I created the script below with a little help from the Windows Script Repository.

———-COPY EVERYTHING BELOW THIS LINE for the Script———-
'' This script will combine text files into one big file
'Created by Cheyenne Harden 7.13.07 with some help from the Windows scripting Guys.

Const ForReading = 1
strComputer = "."
RenameFiles ()
WriteFiles ()

 

Function RenameFiles ()
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:\Documents and Settings\test.user\Desktop\text'} Where " _
        & "ResultClass = CIM_DataFile")

For Each objFile In FileList
    strDate = Left(objFile.CreationDate, 24)
    strNewName = objFile.Drive & objFile.Path & _
       strDate & "." & "txt"
    strNameCheck = Replace(strNewName, "\", "\\")

    i = 1
    Do While True
        Set colFiles = objWMIService.ExecQuery _
            ("Select * from Cim_Datafile Where Name = '" & strNameCheck & "'")
        If colFiles.Count = 0 Then
            errResult = objFile.Rename(strNewName)
            Exit Do
        Else
            i = i + 1
            strNewName = objFile.Drive & objFile.Path & _
                strDate & "_" & i & "." & "txt"
            strNameCheck = Replace(strNewName, "\", "\\")
        End If
    Loop
Next
End Function

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

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:\Documents and Settings\test.user\Desktop\text'} 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
End Function

———-COPY EVERYTHING ABOVE THIS LINE for the Script———-

 

PLEASE MAKE SURE NO WORD WRAPPING IS HAPPENING IN YOUR SCRIPT!!!

To make this script work you will need the items below!

1. Make sure to use a copy of the files you want to combine
2. Change the two lines that look like the item below to represent your file structure.
 Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:\Documents and Settings\test.user\Desktop\text'} Where " & "ResultClass = CIM_DataFile")
3. If you want you can change the name of the output file, see the line below.
 Set objOutputFile = objFSO.CreateTextFile("output.txt")
 
This information is provided "AS IS" with no warranties expressed or implied.

Leave a Reply

Your email address will not be published. Required fields are marked *