View Full Version : Insert comma between names on a list


Highlander
11-10-2005, 03:26 PM
Hello. I have an Excel spreadsheet with one column of server names. I
export that to a text file, and the list looks like this:

AB150-ATTS01
AB172-ATTS03
AC1AA-ATTS01
AC1DC-ATTS03
AC2BF-ATTS03
AD3C2-ATTS02
AD5A7-ATTS01
AD5CA-ATTS01

In order to process this list of names, I need it in the following
format - one single line, with the names separated by a comma:

AB150-ATTS01,AB172-ATTS03,AC1AA-ATTS01,AC1DC-ATTS03,AC2BF-ATTS03,AD3C2-ATTS02,AD5A7-ATTS01,AD5CA-ATTS01

The list is 2000 names long. It's rather tedious to insert the comma
and get everything on one single line manually. Is there a script that
will do this for me?

Any help would be greatly appreciated. Thanks!

- Dave

XMLallUPinMYeye
11-10-2005, 04:25 PM
You can do something along this line.

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

dim fso : set fso = CreateObject("Scripting.FileSystemObject")
dim f : set f = fso.GetFile(server.MapPath("txtDB.txt"))
dim ts : set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)

do while not ts.AtEndOfStream
if len(myText) > 0 then myText = myText & ","
myText = myText & trim(ts.ReadLine)
loop

call CreateTextFile(myText,"txtCommatized.txt")


sub CreateTextFile(byVal text, byVal filename)
dim fso, MyFile
set fso = CreateObject("Scripting.FileSystemObject")
set MyFile = fso.CreateTextFile(server.MapPath(filename),true)
MyFile.WriteLine(text)
MyFile.Close
set fso = nothing
end sub



"Highlander" wrote:

> Hello. I have an Excel spreadsheet with one column of server names. I
> export that to a text file, and the list looks like this:
>
> AB150-ATTS01
> AB172-ATTS03
> AC1AA-ATTS01
> AC1DC-ATTS03
> AC2BF-ATTS03
> AD3C2-ATTS02
> AD5A7-ATTS01
> AD5CA-ATTS01
>
> In order to process this list of names, I need it in the following
> format - one single line, with the names separated by a comma:
>
> AB150-ATTS01,AB172-ATTS03,AC1AA-ATTS01,AC1DC-ATTS03,AC2BF-ATTS03,AD3C2-ATTS02,AD5A7-ATTS01,AD5CA-ATTS01
>
> The list is 2000 names long. It's rather tedious to insert the comma
> and get everything on one single line manually. Is there a script that
> will do this for me?
>
> Any help would be greatly appreciated. Thanks!
>
> - Dave
>
>

nyiaj_vaj@yahoo.com
11-10-2005, 04:30 PM
Here's the answer to the first half of your problem:

'Start of script

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

dim fso : set fso = server.CreateObject("Scripting.FileSystemObject")
dim f : set f = fso.GetFile(PATHOFTEXTFILE)
dim ts : set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)

dim sTextCommatized

do while not ts.AtEndOfStream
if len(sTextCommatized) > 0 then sTextCommatized = sTextCommatized
& ","
sTextCommatized = sTextCommatized & ts.ReadLine
loop

'the variable "sTextCommatized" should now contain yoru comma-delimited
data, all you need to do is write it to a file which is trivial.

McKirahan
11-10-2005, 04:31 PM
"Highlander" <tron9901@msn.com> wrote in message
news:1131636360.183259.141170@g43g2000cwa.googlegroups.com...
> Hello. I have an Excel spreadsheet with one column of server names. I
> export that to a text file, and the list looks like this:
>
> AB150-ATTS01
> AB172-ATTS03
> AC1AA-ATTS01
> AC1DC-ATTS03
> AC2BF-ATTS03
> AD3C2-ATTS02
> AD5A7-ATTS01
> AD5CA-ATTS01
>
> In order to process this list of names, I need it in the following
> format - one single line, with the names separated by a comma:
>
>
AB150-ATTS01,AB172-ATTS03,AC1AA-ATTS01,AC1DC-ATTS03,AC2BF-ATTS03,AD3C2-ATTS0
2,AD5A7-ATTS01,AD5CA-ATTS01
>
> The list is 2000 names long. It's rather tedious to insert the comma
> and get everything on one single line manually. Is there a script that
> will do this for me?
>
> Any help would be greatly appreciated. Thanks!
>
> - Dave

Will this help? Watch for word-wrap.

Option Explicit
Const cVBS = "commas.vbs"
Const cOTF = "commas.txt"
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objOTF
Set objOTF = objFSO.OpenTextFile(cOTF,1)
Dim strOTF
strOTF = objOTF.ReadAll
Set objOTF = Nothing
strOTF = Replace(strOTF,vbCrLf,",")
If Right(strOTF,1) = "," Then strOTF = Left(strOTF,Len(strOTF)-1)
Set objOTF = objFSO.OpenTextFile(cOTF,2,True)
objOTF.Write(strOTF)
Set objOTF = Nothing
Set objFSO = Nothing
MsgBox "Done!",vbInformation,cVBS

tron9901@msn.com
11-10-2005, 05:26 PM
XMLallUPinMYeye,

I've tried your script and I get the following runtime error:

Line: 10
Char: 1
Error: Bad file mode

The only change I've made to your script was inserting the file name
"test.txt":
dim f : set f = fso.GetFile("test.txt")

Btw, line 10 is:
do while not ts.AtEndOfStream

The file test.txt is in the same folder as the script.

nyiaj_vaj@yahoo.com
11-10-2005, 05:47 PM
tron9901@msn.com wrote:
> XMLallUPinMYeye,
>
> I've tried your script and I get the following runtime error:
>
> Line: 10
> Char: 1
> Error: Bad file mode
>
> The only change I've made to your script was inserting the file name
> "test.txt":
> dim f : set f = fso.GetFile("test.txt")

Rather than just "test.txt", use server.mappath("test.txt")

>
> Btw, line 10 is:
> do while not ts.AtEndOfStream
>
> The file test.txt is in the same folder as the script.

tron9901@msn.com
11-10-2005, 06:15 PM
nyiaj_...@yahoo.com,

I've tried that and a few other variations; still wouldn't work.

Actually, I was able to get McKirahan's script to work. I've made a few
changes to it - works great!

Thanks to all who responded!!

Modified script:

Option Explicit
Const cVBS = "Commatize Me.vbs"

Dim fFile
fFile = InputBox ("Type the name of the file you want to
commatize:","Commatize Me.vbs",fFile)
if fFile = "" Then wscript.quit

Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objOTF
Set objOTF = objFSO.OpenTextFile(fFile,1)
Dim strOTF
strOTF = objOTF.ReadAll
Set objOTF = Nothing
strOTF = Replace(strOTF,vbCrLf,",")
If Right(strOTF,1) = "," Then strOTF = Left(strOTF,Len(strOTF)-1)
Set objOTF = objFSO.OpenTextFile(fFile,2,True)
objOTF.Write(strOTF)
Set objOTF = Nothing
Set objFSO = Nothing
Set fFile = Nothing
MsgBox "You've been commatized!",vbInformation,cVBS