I am new to the scripting world and could use a little assistance. I've played around with scripts here and there, but recently I've become more involved and have my first script that I've been working on that needs a little help. Please see the code below and advise on how I might tweak it a little if there is any redundancies that could be coded more cleanly, etc... I have tested it and it is currently working, but I'd also like to add one more report as well.

I have REMed out few lines that run a subroutine to log the results of the changes so you can see what I'm doing here.

I'd also like to log if the file \ folder does not exist - the script has run successfully, but no files were detected and no files have been changed. Exit SUCCESS

I do want to keep the variable types listed in the names as I've been told this makes it much easier to troubleshoot and good practive for other languages if I decide to move on further with coding.

I also like to keep the coding part very generic so all user data is defined in the Dim / Const area and can be easily recognized and changed for future use in similar projects.

Here is my script:

 

Option Explicit

On Error GoTo 0

 Const FORREADING       = 1
 Const FORWRITING       = 2
 Const CREATE        = True  Dim Counter    : Counter = 1
 Dim intNewTextCounter1 : intNewTextCounter1 = 0
 Dim intNewTextCounter2 : intNewTextCounter2 = 0
 Dim objFSO    : Set objFSO = CreateObject("Scripting.FileSystemObject")
 Dim objMyFile
 Dim objMyTemp
 Dim strEditFile1  : strEditFile1  = strFilePath & "default.txt"
 Dim strFilePath
 Dim strMyLine
 Dim strNewText1   : strNewText1 = "New text 1"
 Dim strNewText2   : strNewText2 = "New text 2"
 Dim strOriginalText1 : strOriginalText1 = "Text to be replaced 1"
 Dim strOriginalText2 : strOriginalText2 = "Text to be replaced 2"
 Dim strTempFile  Dim arrFileFolders  : arrFileFolders = Array("C:\Home\", _
              "C:\Program Files\Home\")
  For Each strFilePath In arrFileFolders
   strEditFile1  = strFilePath & "default.txt"
   strTempFile  = strFilePath & "EditFile.tmp" 'Routine begins here   If objFSO.FileExists(strEditFile1) Then
  
  'LogProgress("The file [" & strEditFile1 & " has been found]")    Set objMyFile = objFSO.OpenTextFile(strEditFile1, FORREADING)
  
   Set objMyTemp = objFSO.OpenTextFile(strTempFile, FORWRITING, CREATE)
   
   Do While Not objMyFile.AtEndofStream
  
     strMyLine = objMyFile.ReadLine
     
    If InStr(1, strMyLine, strOriginalText1, vbTextCompare) Then
    
     strMyLine = Replace(strMyLine, strOriginalText1, strNewText1, 1, -1, vbtextcompare)
     
     intNewTextCounter1 = intNewTextCounter1 + Counter
     
    End If
    
    If InStr(1, strMyLine, strOriginalText2, vbTextCompare) Then
    
     strMyLine = Replace(strMyLine, strOriginalText2, strNewText2, 1, -1, vbtextcompare)
     
     intNewTextCounter2 = intNewTextCounter2 + Counter     End If     objMyTemp.WriteLine strMyLine
   
   Loop
  
   objMyFile.Close
   
   objMyTemp.Close
   
  'LogProgress("The original text [" & strOriginalText1 & "] has been detected in " & strEditFile1 & " and changed to [" & strNewText1 & "] " & intNewTextCounter1 & " times")   'LogProgress("The original text [" & strOriginalText2 & "] has been detected in " & strEditFile1 & " and changed to [" & strNewText2 & "] " & intNewTextCounter2 & " times")    intNewTextCounter1=0
   
   intNewTextCounter2=0
   
   objFSO.DeleteFile strEditFile1
  
   objFSO.MoveFile strTempFile, strEditFile1
  
  End If  Next  Set objFSO = Nothing ' I've been told that this prevents memory leakage

----------------------------------------------------------------------------------

Your thoughts?

 

0 Comments   [ + ] Show Comments

Comments

Please log in to comment

There are no answers at this time

Answers

Answer this question or Comment on this question for clarity
Admin Script Editor
Admin Script Editor is an integrated scripting environment available free here at ITNinja

Share