Solved

VBScript Function to process file in -> file out

Posted on 2008-06-11
3
316 Views
Last Modified: 2010-04-16
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
Comment
Question by:dbbishop
  • 2
3 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 21761647
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
 
LVL 15

Author Comment

by:dbbishop
ID: 21761759
VBScript. Not VBA; not VB6; not VB.Net. VBScript.
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 21762428
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

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now