You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.4 KiB
Plaintext

Option Explicit
Dim fso
Dim folder
Dim logfile
Dim newfile
Dim deletefile
Dim finalcontents
Dim objArgs
Dim filename
Dim searchstr
Dim replacestr
Dim CompareMethod
Dim Counter
Set objArgs = WScript.Arguments
Set fso = CreateObject("Scripting.FileSystemObject")
If objArgs.count >= 3 And objArgs.count <=4 Then
filename = objArgs(0)
searchstr = Split(objArgs(1),",")
replacestr = Split(objArgs(2),",")
If objArgs.count = 4 Then
CompareMethod = objArgs(3)
If CompareMethod <> 0 And CompareMethod <> 1 Then
Wscript.Echo "CompareMethod can only be 0 or 1"
Wscript.Quit(1) 'To indicate error.
End If
Else
CompareMethod = 0 ' Default To vbBinaryCompare.
End If
Else
wscript.echo "Usage: FindReplace.vbs [arguments..]" + vbCrLf + vbCrLf + "Arguments:" + vbCrLf + "File To be Searched" + vbCrLf + "Searched string" + vbCrLf + "String to replace" + vbCrLf + "[Comparison Method]"
wscript.Quit (1) 'To indicate error.
End If
' Check the length of search string and
' replace string.
' Both should be equal otherwise error o
' ut
If UBound(searchstr) <> UBound(replacestr) Then
wscript.echo "Search String does Not have corresponding replace string"
wscript.Quit(1)
End If
TextSearch(Filename)
Function TextSearch(Filename)
Set logfile = fso.OpenTextFile(filename)
If Err.number <> 0 Then
Wscript.echo Err.description
Wscript.Quit (Err.number)
End If
Counter = 0
finalcontents = logfile.readall
Do While Counter <= UBound(searchstr)
If CompareMethod = 0 Then
finalcontents = Replace(finalcontents, Trim(searchstr(counter)), Trim(replacestr(counter)), 1, -1, vbBinaryCompare)
Else
finalcontents = Replace(finalcontents, Trim(searchstr(counter)), Trim(replacestr(counter)), 1, -1, vbTextCompare)
End If
Counter = counter + 1
Loop
logfile.Close
Set deletefile = fso.getFile(filename)
deletefile.delete
Set newfile = fso.CreateTextFile(filename, True)
newfile.write FinalContents
newfile.close
If Err.number <> 0 Then
Wscript.echo Err.description
Wscript.Quit (Err.number)
End If
Set logfile = Nothing
Set deletefile = Nothing
Set newfile = Nothing
End Function