I was browsing The Scripting Guys site the other day and found a nice free com object from MS
All You Need is Log (Well, Log Parser)

It parses many log file formats as well as normal text file, Tab seperated files and XML files.
It can output into a number of text formats as well as push output to a database or a gui

It has both a command line and COM object interface
What struck me the most at this point was searching the filesystem for files though

Example: find all the files in c:\tmp or sub directories named DesiredFile.wrl and print out their full paths.
<font color="blue">CreateObject</font>
<font class="small">Code:</font><hr /><pre>
<font color="blue">Dim</font> LogParser <font color="blue">as object</font>
<font color="blue">Dim</font> InputFormat <font color="blue">as object</font>
<font color="blue">Dim</font> RecordSet <font color="blue">as object</font>
<font color="blue">Dim</font> Record <font color="blue">as object</font>
<font color="blue">Dim</font> Query <font color="blue">as object</font>
<font color="blue">Dim</font> FileName <font color="blue">as string</font>

<font color="blue">Set</font> LogParser = <font color="blue">CreateObject</font>("MSUtil.LogQuery")
<font color="blue">Set</font> InputFormat = _
<font color="blue">CreateObject</font>("MSUtil.LogQuery.FileSystemInputFormat")
InputFormat.recurse = -1 <font color="green">' recursively search all subdirectories</font>

Query = "SELECT Path, Name, Size FROM 'C:\tmp\*.*' WHERE Name ='DesiredFile.wrl' ORDER BY Path ASC"
<font color="blue">Set</font> RecordSet = LogParser.Execute( Query, InputFormat )

<font color="blue">Do Until</font> RecordSet.atEnd

<font color="green">' Get a record</font>
<font color="blue">Set</font> Record = RecordSet.getRecord

<font color="green">' Get first field value</font>
FileName = Record.getValue ( 0 )

<font color="green">' Print field value</font>
<font color="blue">sqaconsolewrite</font> Record.getValue ( 0 ) &amp; Record.getValue ( 1 ) &amp; Record.getValue ( 2 )

<font color="green">' Advance LogRecordSet to next record</font>

<font color="blue">Loop</font>
</pre><hr />