0
votes

OK, I have a nifty VBS that will search huge log files for certain character strings, but I don't always want to search every log file for every string. I'd like an HTA frontend that allows the end user to select what strings they want to look for.

Here is a sample of my code and it works great as a vb, but in this example, i'd like checkboxes for cows, goats, cats, dogs, etc.. and for the script to run correctly no matter how many are selected.. (my actual script has about 20 words to choose from) and also the path and name of the 'animal log file' is currently an input box.. i'd like that in the hta as well.

Const ForReading = 1
Dim words(7)
Dim msg
words(0) = "cows"
words(1) = "goats"
words(2) = "cats"
words(3) = "dogs"
words(4) = "elephants"
words(5) = "giraffes"   


Set objFSO = CreateObject("Scripting.FileSystemObject")

strAnswer = InputBox("Please enter the path & filename for the animal log file:", _
    "Create File")
Wscript.Echo strAnswer

Set objFile = objFSO.OpenTextFile( strAnswer, ForReading)
Set inFile = objFSO.OpenTextFile ( strAnswer, ForReading)


strContents = objFile.ReadAll
objFile.Close

Set outFile = objFSO.OpenTextFile( strAnswer &"_parsed-output.txt", 8, True)

Do Until inFile.AtEndOfStream
    strSearchString = inFile.ReadLine
    For i = 0 To UBound(words)-1
    If InStr(strSearchString,words(i)) Then
        msg = msg&strSearchString&vbcrlf
    End If
    next
Loop

inFile.Close
outfile.WriteLine msg

WScript.Echo "Done!"
1

1 Answers

4
votes

This can get you started. You will need to code in how to handle if multiple checkboxes are selected and the code logic required to open those log files (multiple log files). You can find more info about HTAs here, http://technet.microsoft.com/en-us/scriptcenter/dd742317.aspx

<html>
<head>
<title>My Logfile App</title>
<HTA:APPLICATION
  APPLICATIONNAME="My Logfile App"
  ID="MyLogfileApp"
  VERSION="1.0"/>
</head>

<script language="VBScript">

Sub Window_OnLoad
  window.resizeto 300,300
End Sub

Sub Start_Button()

    Const ForReading = 1
    Dim objFSO, objFile, inFile, strAnswer
    strAnswer = ""

    If chkCows.Checked Then strAnswer = "Cows"
    If chkGoats.Checked Then strAnswer = "Goats"
    If chkCats.checked Then strAnswer = "Cats"
    If chkDogs.Checked Then strAnswer = "Dogs"
    If chkElephants.Checked Then strAnswer = "Elephants"
    If chkGiraffes.Checked Then strAnswer = "Giraffes"

    'If strAnswer is empty then nothing was checked.
    If strAnswer = "" Then 
        Window.Alert "Please Make an Selection!"
        Exit Sub
    End If

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile( strAnswer, ForReading)
    Set inFile = objFSO.OpenTextFile ( strAnswer, ForReading)

    strContents = objFile.ReadAll
    objFile.Close

    Set outFile = objFSO.OpenTextFile( strAnswer &"_parsed-output.txt", 8, True)

    Do Until inFile.AtEndOfStream
        strSearchString = inFile.ReadLine
        For i = 0 To UBound(words)-1
        If InStr(strSearchString,words(i)) Then
            msg = msg&strSearchString&vbcrlf
        End If
        next
    Loop

    inFile.Close
    outfile.WriteLine msg

    Window.Alert "Done!"
End Sub
</script>

<body bgcolor="white">
<center>
    <label>Choose your logfile below.</label><br />
</center>
<input type="checkbox" name="chkCows" id="chkCows">Cows<br />
<input type="checkbox" name="chkGoats" id="chkGoats">Goats<br />
<input type="checkbox" name="chkCats" id="chkCats">Cats<br />
<input type="checkbox" name="chkDogs" id="chkDogs">Dogs<br />
<input type="checkbox" name="chkElephants" id="chkElephants">Elephants<br />
<input type="checkbox" name="chkGiraffes" id="chkGiraffes">Giraffes<br />
<p>
<center>
    <input type="button" name="btnStart" id="btnStart" value="Start" onclick="Start_Button">
</center>
</body>
</html>