Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 352
  • 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:
abc,def,xyz
tuv,mno,rts

the file c:\mydata\myfileout.txt would contain (after the call):
123456,abc,def,xyz
123456,tuv,mno,rts

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.
0
dbbishop
Asked:
dbbishop
  • 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)
0
 
dbbishopAuthor Commented:
VBScript. Not VBA; not VB6; not VB.Net. VBScript.
0
 
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
        Wend
        f.Close
        Set f = Nothing
        f2.Close
        Set f2 = Nothing
    Else
        MsgBox inFile, vbOKOnly, "inFile Not Found"
    End If
    Set fso = Nothing
    WriteOut = lineCount
End Function

Open in new window

0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

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