Minor Modification Needed

Posted by Nnewbie on Thu 10 Jul 2003 08:53 PM — 2 posts, 11,044 views.

#0
I have the following vbscript for a macro which is supposed to parse a file, clean it up from certain symbols, and write over it. I need help to make it act on multiple files at once. Is there any way to do this? thanks in advance....

____________________
Sub Parse_File

const ForReading = 1
const TristateFalse = 0
dim sName
dim outputFile
dim fso
dim objFile
dim objTS
set fso = CreateObject("Scripting.FileSystemObject")
sName = "W520213.wrl"
set objFile = fso.GetFile(sName)
set objTS = objFile.OpenAsTextStream(ForReading, TristateFalse)

'***********-----
contents = objTS.Read(objFile.Size)

dim fFile, contents, aFile, iLine, iLines, sLine, sWord

'loading file into a string
set fFile = fso.OpenTextFile( sName, 1 ) '1 = ForReading
'fFile.Close

'splitting string into an array
aFile = Split( contents, vbCrLf )

'scanning lines
iLines = UBound( aFile ) + 1
iLine = 0
do while iLine < iLines
sLine = aFile( iLine )

dim c
c=Left(sLine,1)
While c=Chr(9) or c=" "
sLine=Mid(sLine,2)
c=Left(sLine,1)
Wend
sWord=Left(sLine,3)

if ( sWord = "DEF" ) or ( sWord = "USE" ) then

str1 = left(sLine, 5)
str2 = mid(sLine, 7)
str3 = UCase(Mid(sLine, 6, 1))

dim check_for_num
check_for_num = IsNumeric(str3)

if (check_for_num = true) then
sLine = str1 + str2

else
sLine = str1 + str3 + str2

end if

'sWord=Left(sLine,3)
'sWord = left( trim( sLine ), 3 )
'sWord = left(sLine, 3 )

'alert UCase(Left(sLine,1))

sLine = CleanString( sLine, Chr(34) & "/,:" )
end if

'- put it back in array with
aFile( iLine ) = sLine

iLine = iLine + 1
loop

'rejoining array items into a string, writing to output file
contents = Join( aFile, vbCrLf )

set fFile = fso.CreateTextFile( sName, True )
fFile.Write contents

fFile.Close

end sub

function CleanString( sInput, sSymbols )

dim sClean
sClean = ""

dim l, i, c
l = len( sInput )
i = 1

'- while more input string
do while i <= l

'- snip out a character
c = mid( sInput, i, 1 )

'- if not a symbol, add to cleaned string
if InStr( sSymbols, c ) = 0 then
sClean = sClean & c
end if

i = i + 1
loop

CleanString = sClean
end function

if instr(strSearchThis, "keyword") > 0 then
Response.Write "Found it!"
end if

'---------------

End Sub
Australia Forum Administrator #1
You need to scan a directory to do this. I did a quick Google search for "Scripting.FileSystemObject directory scan" and found this as the first entry, which seems to be pretty good:

http://www.winscripter.com/wsh/fileio/ht_scandir.asp