• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 360
  • Last Modified:

VBScript Function to process file in -> file out

I need a function in VBScript that accepts 3 parameters, an input filename, an output filename and a string.
I want the function to open the input file for reading and the output file for appending.
I want to write each line of the input file to the output file with the string prepended to the data, then close the files and return the number of lines written (or read)
Here is an example:
calling the function:
  lc = WriteOutput("c:\mydata\myfilein.txt", "c:\mydata\myfileout.txt", "123456,")
  MsgBox cstr(lc) & " lines written"

If the contents of c:\mydata\myfilein.txt was:

the file c:\mydata\myfileout.txt would contain (after the call):

IMPORTANT: If c:\mydata\myfileout.txt already contains data, I want the additional data appended to the file. Thus, if I called the function a second time, with a different input filename and string but same output file, the contents of the string + input file  would be added to the output file.
  • 2
1 Solution
Mike TomlinsonMiddle School Assistant TeacherCommented:
Please refine what you mean by "VBScript" as it is often used to refer to any code snippet in one of many VB environments...

VBScript (.vbs)
VBA (Office App)
VB6 (or below)
VB.Net 2003 (or below)
VB.Net 2005 (or above)
dbbishopAuthor Commented:
VBScript. Not VBA; not VB6; not VB.Net. VBScript.
Mike TomlinsonMiddle School Assistant TeacherCommented:
Something like this should work...
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Function WriteOut(inFile, outFile, prepend)
    Dim fso, f, f2
    Dim inputLine, lineCount
    lineCount = 0
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(inFile) Then
        Set f = fso.OpenTextFile(inFile, ForReading, False)
        Set f2 = fso.OpenTextFile(outFile, ForAppending, True)
        While Not f.AtEndOfStream
            inputLine= f.ReadLine
            lineCount = lineCount + 1
            f2.WriteLine prepend & inputLine
        Set f = Nothing
        Set f2 = Nothing
        MsgBox inFile, vbOKOnly, "inFile Not Found"
    End If
    Set fso = Nothing
    WriteOut = lineCount
End Function

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now