Thursday, December 10, 2009

Search and Replace function in VBS

Call this with below parameters


Eg.
cscript searchAndReplace.vbs "GWSQL2KPE1" "GPAPP01" install.cfg


Dim FileName, Find, ReplaceWith, FileContents, dFileContents, regEx, CurrentMatch, CurrentMatches
Find = WScript.Arguments(0)
ReplaceWith = WScript.Arguments(1)
FileName = WScript.Arguments(2)

Set regEx = New RegExp
regEx.Pattern = Find
regEx.IgnoreCase = True
regEx.Global = True
regEx.MultiLine = True


'Read source text file
FileContents = GetFile(FileName)

'replace all string In the source file

dFileContents=regEx.Replace(FileContents, ReplaceWith)

'Compare source And result
if dFileContents <> FileContents Then
'write result If different
WriteFile FileName, dFileContents

Wscript.Echo "Replace done."
If Len(ReplaceWith) <> Len(Find) Then 'Can we count n of replacements?
Wscript.Echo _
( (Len(dFileContents) - Len(FileContents)) / (Len(ReplaceWith)-Len(Find)) ) & _
" replacements."
End If
Else
Wscript.Echo "Searched string Not In the source file"
End If

'Read text file
function GetFile(FileName)
If FileName<>"" Then
Dim FS, FileStream
Set FS = CreateObject("Scripting.FileSystemObject")
on error resume Next
Set FileStream = FS.OpenTextFile(FileName)
GetFile = FileStream.ReadAll
End If
End Function

'Write string As a text file.
function WriteFile(FileName, Contents)
Dim OutStream, FS

on error resume Next
Set FS = CreateObject("Scripting.FileSystemObject")
Set OutStream = FS.OpenTextFile(FileName, 2, True)
OutStream.Write Contents
End Function

No comments: