Add text to text file if it already exists

I have a script that works to replace some characters in a fixed width file (starting at line 2 onward).

What is needed to avoid overwriting the target file if it already exists. Instead, if it exists, add lines (starting at line 2 from the source file) to the end of the target file. I am struggling to find a thread with the right sentence. This is the current code:

Dim objFSO
dim objFile
dim thisLine
Set objFSO = CreateObject("Scripting.FileSystemObject")


If (objFSO.FileExists("C:\Users\Dimitar\Desktop\BPSDRC\PAYBOTH.dat")) Then
  Set objFile = objFSO.GetFile("C:\Users\Dimitar\Desktop\BPSDRC\PAYBOTH.dat")
Else
  WScript.Quit()
End If

If objFile.Size > 0 Then 'make sure the input file is not empty
    Set inputFile = objFSO.OpenTextFile("C:\Users\Dimitar\Desktop\BPSDRC\PAYBOTH.dat", 1)  'Replace the filename here
    set outputFile = objFSO.CreateTextFile("C:\Users\Dimitar\Desktop\BPSDRC\PAYIMP.dat", TRUE) 'replace it with output filename

    ' first line - leave it as it is
    thisLine = inputFile.ReadLine  
    newLine = thisLine
    outputFile.WriteLine newLine

    'all remaining lines - read them and replace the middle part with 18 zeroes 
    do while not inputFile.AtEndOfStream  
            thisLine = inputFile.ReadLine  ' Read an entire line into a string.
            'the zeroes are to fix issue N1 (payment in other amt)
            'the CDF are to fix issue N2 (payment in local amt)
            newLine = mid(thisLine,1,47) & "000000000000000000" & mid(thisLine,66,121) & "CDF" & mid(thisLine,190)
            outputFile.WriteLine newLine
    loop
    inputFile.Close
    outputFile.Close
    objFSO.DeleteFile "C:\Users\Dimitar\Desktop\BPSDRC\PAYBOTH.dat"
end if

      

+3


source to share


1 answer


Open the file to add



Option Explicit

Const ForReading = 1, ForAppending = 8

Dim inputFileName, outputFileName
    inputFileName  = "C:\Users\Dimitar\Desktop\BPSDRC\PAYBOTH.dat"
    outputFileName = "C:\Users\Dimitar\Desktop\BPSDRC\PAYIMP.dat"

Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")

    If Not fso.FileExists( inputFileName ) Then
        WScript.Quit
    End If

    If fso.GetFile( inputFileName ).Size < 1 Then 
        WScript.Quit
    End If 

Dim newFile, inputFile, outputFile 
    newFile = Not fso.FileExists( outputFileName )

    Set inputFile = fso.OpenTextFile( inputFileName, ForReading )
    Set outputFile = fso.OpenTextFile( outputFileName, ForAppending, True )

Dim lineBuffer

    lineBuffer = inputFile.ReadLine()
    If newFile Then 
        outputFile.WriteLine lineBuffer
    End If

    Do While Not inputFile.AtEndOfStream  
        lineBuffer = inputFile.ReadLine
        lineBuffer = mid(lineBuffer,1,47) & "000000000000000000" & mid(lineBuffer,66,121) & "CDF" & mid(lineBuffer,190)
        outputFile.WriteLine lineBuffer
    Loop

    inputFile.Close
    outputFile.Close

    fso.DeleteFile inputFileName 

      

+6


source







All Articles