Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 401
  • Last Modified:

VBScript, FileSystemObject, AtEndOfString Problems

Hello,

    I am sure this is something simple, but I haven't done this type of stuff in quite some time. I am trying to open one file, read it, put line by line info into an array. Then, I want to clean up the data and dump it to a new file.  The code I am including is my basic's that i'm starting with.  I cannot get the "f = fso.OpenTextFile" to cooperate at all. If I try to add the "ReadOnly, True" arguments, I get errors.  The "f.AtEndOfString" doesn't appear to be working either. Please offer some direction to get me going a bit further. I appreicate everything.

As a note, I'm using VBScripting. I would like to stay with that if at all possible. The originating data file is a txt file.  
Dim fso, f, f2, lineNum(), cnt, i, ii
ii = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\temp.txt")
 
Do while not f.AtEndOfString
  ReDim Preserve lineNum(ii)
  lineNum(ii) = ii
  ii = ii + 1
  Loop
 
f.Close
  
Set f2 = fso.CreateTextFile("C:\disabled.cvs")
  For each i in lineNum
   f2.WriteLine lineNum(i)
 Next
 
  f2.Close
  Set f = Nothing
  Set f2 = Nothing
  Set fso = Nothing

Open in new window

0
mmitchell57
Asked:
mmitchell57
  • 3
  • 2
1 Solution
 
mmitchell57Author Commented:
The first loop is just to make sure the loop is working, which it is. I just can't get the "F" object to work.  The "F2" works fine. If I change the "F" to create file, i can write to it all day long.  I'll try append as well.
0
 
mmitchell57Author Commented:
Ok, i've mad it this far in the code. I now get an error message stating "Subscript out of range: "12"...

here's the code that's updated.
Dim fso, f, f2, ts, lineNum(), cnt, i, ii
ii = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\temp.txt", 1, true)
 
Do until ii = 10 
  ReDim Preserve lineNum(ii)
  lineNum(ii) = f.readline
  ii = ii + 1
  Loop
f.Close
  
Set f2 = fso.CreateTextFile("C:\disabled.cvs")
  For each i in lineNum
   f2.WriteLine lineNum(i)
  Next
  f2.Close
 
  Set f = Nothing
  Set f2 = Nothing
  Set fso = Nothing

Open in new window

0
 
RobSampsonCommented:
Hi, I've included a shorter way to put the contents of a file into an array.  Then when you are outputting the lines to File2, you can do any validation on the lines to clean it up.

Regards,

Rob.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
strFile1 = "C:\Temp\Text.txt"
strFile2 = "C:\Temp\Disabled.cvs"
 
Set objFile1 = objFSO.OpenTextFile(strFile1, intForReading, False)
' This is a short way of reading the entire contents into an array
arrContents = Split(objFile1.ReadAll, VbCrLf)
objFile1.Close
 
Set objFile2 = objFSO.CreateTextFile(strFile2, True)
For Each strLine In arrConents
	objFile2.WriteLine strLine
Next
objFile2.Close
 
MsgBox "Done"

Open in new window

0
 
mmitchell57Author Commented:
Excellent answer. :) I appreciate the info and help!
0
 
RobSampsonCommented:
No problem. Thanks for the grade.

Regards,

Rob.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

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.

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