17 feb 2010

Sostituzione stringa in un file di testo, in vbs

Va bene, so che questo codice non è proprio originale ma è stato preso qua e là dalla rete e riadattato, e so che ciò mi costerà qualche cosa in termini di - già povero - PageRank.

Ma avevo bisogno di modificare una stringa in un file di sistema all'avvio del PC. Cosa c'è di meglio di uno script VBS per fare il lavoro? E per distribuirlo, le buone vecchie policy di Active Directory vanno sempre bene:

Dim WshShell, objEnv
Dim FileContents, dFileContents
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objEnv = WshShell.Environment("Process")

FileContents = GetFile(objEnv("ProgramFiles") & "\ProgrammaCattivo\Config.cfg")
dFileContents = Replace(FileContents, "StringaVecchia", "StringaNuova", 1, -1, 1)

If dFileContents <> Filecontents Then
  WriteFile objEnv("ProgramFiles") & "\ProgrammaCattivo\Config.cfg", dFileContents
End If

Function GetFile(FileName)
  Dim FS, FileStream
  Set FS = CreateObject("Scripting.FileSystemObject")
  Set FileStream = FS.OpenTextFile(FileName)
  GetFile = FileStream.ReadAll
End Function

Function WriteFile(FileName, Contents)
  Dim OutStream, FS
  Set FS = CreateObject("Scripting.FileSystemObject")
  Set OutStream = FS.OpenTextFile(FileName, 2, True)
  OutStream.Write Contents
End Function

E poi, naturalmente, è sempre utile sapere se e quando lo script è stato eseguito per davvero. Magari possiamo aggiungere anche qualche altra informazione di debug, che non fa mai male.


WshShell.RegWrite "HKLM\Software\MiaAzienda\Init_Settings_Eseguito", Now(), "REG_SZ"
WshShell.RegWrite "HKLM\Software\MiaAzienda\Init_Settings_Sostituzioni", conteggio, "REG_SZ"
etc...

Happy scripting, guys!

Nessun commento: