Editing a VBS script

Status
This thread has been Locked and is not open to further replies. Please start a New Thread if you're having a similar issue. View our Welcome Guide to learn how to use this site.

tommo020788

Thread Starter
Joined
Oct 20, 2008
Messages
322
hi, I have a VBS script here that allows me to search, and delete any registry entry with a specified keyword in it.

At the end, it displays a message box, saying it finished, and how long it took to finish (Finished in "" minutes").

I want it to create a text file "finished.txt" instead of displaying this message.

How can I do this?

Code:
' Script that will do a substring search in all key names
' for the string in the variable sKey and delete the key
' if the string is found.
'
' You can set a key path in the variable sStartKeyPathx if
' you want to limit the search to a specific registry branch.
' Adjust callouts to sStartKeyPath1/2/3 as you see fit

Const OpenAsASCII      =  0
Const FailIfNotExist   =  0
Const ForReading       =  1
Const OverwriteIfExist = -1

sStartKeyPath1 =  "HKEY_CURRENT_USER"
sStartKeyPath2 =  "HKEY_LOCAL_MACHINE"
sStartKeyPath3 =  "HKEY_USERS"

sKey = "tomkey"

Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")

' get a temporary registry file name
sTempFile = oFSO.GetSpecialFolder(2).ShortPath & "\" & oFSO.GetTempName

sStart = Now
ExportRegistry sStartKeyPath1, sTempFile
CreateAndRunRegistryFile sKey, sTempFile

ExportRegistry sStartKeyPath2, sTempFile
CreateAndRunRegistryFile sKey, sTempFile

ExportRegistry sStartKeyPath3, sTempFile
CreateAndRunRegistryFile sKey, sTempFile

' delete temp file
If oFSO.FileExists(sTempFile) Then
  oFSO.DeleteFile sTempFile
End If

MsgBox "Finished in " & DateDiff("n", sStart, Now) & " minutes", _
        vbSystemModal, "SearchAndDelete" 

Sub ExportRegistry(sStartKey, sFile)
  If Trim(sKey) = "" Then
    ' export the complete registry
    sCmd = "regedit.exe /S /E:A """ & sFile & """"
  Else
    ' export the registry key to a file
    sCmd = "regedit.exe /S /E:A """ & sFile & """ " & """" & sStartKey & """"
  End If
  oShell.Run sCmd, 0, True
End Sub

Sub CreateAndRunRegistryFile(sString, sInFile)

  sOutFile = oFSO.GetSpecialFolder(2).ShortPath & "\" & oFSO.GetTempName

  ' find all string starting with [ and ends with ], and that
  ' also contains at least one bachslash in addition to the
  ' text in the variable sString
  sCmd = "%comspec% /c findstr.exe " _
       & "/i /r ""^\[.*\\.*" & sString & ".*\]$"" """ _
       & sInFile & """ >""" & sOutFile & """"

  oShell.Run sCmd, 0, True

  Set fFile = oFSO.OpenTextFile(sOutFile, ForReading, _
                                    FailIfNotExist, OpenAsASCII)

  sResult = ""
  On Error Resume Next
  sResult = fFile.ReadAll
  fFile.Close
  oFSO.DeleteFile sOutFile
  On Error Goto 0

  If sResult <> "" Then

    Set fRegFile = oFSO.CreateTextFile(sOutFile, _
                    OverwriteIfExist, OpenAsASCII)
    fRegFile.WriteLine "REGEDIT4" & vbCrLf

    aResult = Split(sResult, vbCrLf)

    For i = 0 To UBound(aResult)

      sLine = aResult(i)

      ' do the same tests as the regexp in findstr just in case.
      If InStr(1, sLine, sString, vbTextCompare) > 0 _
                  And Left(sLine, 1) = "[" And Right(sLine, 1) = "]" Then

      sLine = "[-" & Mid(sLine, 2)
        fRegFile.WriteLine sLine
      End If
    Next

    fRegFile.WriteLine vbCrLf   ' add two blank lines at the end
    fRegFile.Close
    sCmd = "regedit.exe /s """ & sOutFile & """"
    oShell.Run sCmd, 0, True

  End If

  If oFSO.FileExists(sOutFile) Then
    oFSO.DeleteFile sOutFile
  End If

End Sub
 
Joined
Jun 26, 2010
Messages
444
Simple. Just create a new text file named "finished.txt" and write the same output you did to the Message Box to the text file. You're already using the FileSystemObject, so this should be a simple change.
 
Status
This thread has been Locked and is not open to further replies. Please start a New Thread if you're having a similar issue. View our Welcome Guide to learn how to use this site.

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

As Seen On
As Seen On...

Welcome to Tech Support Guy!

Are you looking for the solution to your computer problem? Join our site today to ask your question. This site is completely free -- paid for by advertisers and donations.

If you're not already familiar with forums, watch our Welcome Guide to get started.

Join over 807,865 other people just like you!

Latest posts

Top