|
|
<?xml version="1.0"?> <job> <?component error="false" debug="false"?> <resource id="title">interesting information</resource> <resource id="file name"><![CDATA[\bMUIBVT_\d\d\d\d_\d+_\d+.log]]></resource> <resource id="file path"><![CDATA[%TEMP%]]></resource> <resource id="status line"><![CDATA[Result:]]></resource> <resource id="WMI query">SELECT * FROM CIM_DataFile WHERE PATH = "%PATH%"</resource> <public> <!-- Properties --> <property get put name="top"/> <property get put name="left"/> <property get put name="height" /> <property get put name="width" /> <property get put name="title" /> <property get put name="font" /> <property get put name="color" /> <property get put name="background" /> <property get put name="resizable" /> <property get put name="timestamp" /> <property get put name="autoscroll" /> <property get put name="buffer" /> <property get put name="encodeBuffer" /> <property get name="closed" /> <property get name="IEVersion" /> <property get name="OS" /> <property get name="win" /> <property get name="doc" /> <property get name="header" /> <property get name="footer" /> <property name="data" /> <!-- Methods --> <method name="write"> <parameter name="sText"/> </method> <method name="writeBlock"><parameter name="sText"/> </method> <method name="writeHTML"> <parameter name="sHTML"/> </method> <method name="skip"> <parameter name="nLines"/> </method> <method name="HTMLEncodeText"> <parameter name="sText"/> </method> <method name="flush"> </method> <method name="clear"> </method> <method name="clearBuffer"> </method> <method name="show"> </method> <method name="hide"> </method> <method name="center"> </method> <method name="resizeByPercent"> <parameter name="nPercentWidth"/> <parameter name="nPercentHeight"/> </method> <method name="complete"> </method> <method name="close"> </method> </public>
<object id='ie' progid='InternetExplorer.Application'/> <resource id="debug">0</resource> <script language="VBScript"> <![CDATA[ Option Explicit Const TristateFalse = 0 '' Opens the file as ASCII. Const TristateTrue = - 1 '' Opens the file as Unicode. Const TristateUseDefault = - 2 '' Opens the file using the system default.
Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8
Dim bpDebug bpDebug = CBool(GetResource("debug")) Dim dpLgDt Set dpLgDt = CreateObject("Scripting.Dictionary") Dim opFileSys, opShell, spFilePath, spFileName Dim aspSplP
Set opFileSys = CreateObject("Scripting.FilesystemObject") Set opShell = WScript.CreateObject("WScript.Shell")
spFilePath = opShell.ExpandEnvironmentStrings(GetResource("file path")) spFileName = GetResource("file name")
aspSplP = split(opShell.ExpandEnvironmentStrings(spFilePath), "\") Dim opDlRx, opNameSpace, spWQL, opFnRx Set opDlRx = CreateObject("VBScript.Regexp") With opDlRx .Global = True .IgnoreCase = True .Pattern = "^[A-Z]\:" end with
spFilePath = join(aspSplP, "\\") & "\\"
spFilePath = opDlRx.Replace(spfilePath, "") spWQL = GetResource("WMI query") spWQL = Replace(spWQL, "%PATH%", spFilePath) If bpDebug then WSCript.echo spWQL end If Set opNameSpace = GetObject("winmgmts:root\cimv2")
If NOT isObject(opNameSpace) Then ' failed to establish a successful connection to winmgmts service WSCript.quit End If Dim aopDataSet Set aopDataSet = opNameSpace.execQuery(spWQL) Dim opDtMbr Set opFnRx = CreateObject("VBScript.Regexp") With opFnRx .Global = True .IgnoreCase = True .Pattern = GetResource("file name") end with Dim spFNX, spExpandedFullPathName, opFileH, opTxtStream, spFullyPatrsedLog Dim opCsRx Set opCsRx = CreateObject("VBScript.Regexp") With opCsRx .Global = True .IgnoreCase = True .Pattern = join(array("^",GetResource("status line"),"\s*"),"") End With
For Each opDtMbr In aopDataSet spFNX = opDtMbr.FileName & "." & opDtMbr.Extension If opFnRx.Test(spFNX) Then spExpandedFullPathName = opDtMbr.Name If bpDebug then WScript.echo spExpandedFullPathName end If spFullyPatrsedLog = "" Set opFileH = opFileSys.GetFile(spExpandedFullPathName) Set opTxtStream = opFileH.OpenAsTextStream(ForReading, TristateUseDefault) Dim sPcontents Do while opTxtStream.AtEndOfStream <> true sPcontents = opTxtStream.ReadLine If opCsRx.Test(sPcontents) Then spFullyPatrsedLog = spFullyPatrsedLog & _ VBNEWLINE & _ opCsRx.Replace(sPcontents,"") If bpDebug Then WScript.echo opCsRx.Replace(sPcontents,"") End If End If Loop If "" <> spFullyPatrsedLog Then dpLgDt.Add spExpandedFullPathName, spFullyPatrsedLog End If opTxtStream.Close Set opTxtStream = Nothing End If Next Set aopDataSet = Nothing Set opNameSpace = Nothing Set opDlRx = nothing Set opFnRx = nothing '' WSCript.quit Dim spDaBt, spDtOut For Each spDaBt In dpLgDt.Keys spDtOut = spDtOut & _ VBNEWLINE & _ spDaBt & _ ":" & _ dpLgDt(spDaBt) Next If bpDebug then WScript.echo spDtOut End If
'== Global Variables === private oWindow private oDocument private oMsgRegionA private sTitle private bResizable private bTimestamp private bAutoscroll private bBuffer private bEncodeBuffer private bFlushing private bBlockWriting private oBuffer private sTableHTML public data Dim Debug Debug = GetResource("debug")
'== Initialization === sTitle = "Messages" bResizable = true bTimestamp = false bAutoscroll = true bBuffer = false bEncodeBuffer = true set oBuffer = Nothing bFlushing = false bBlockWriting = false
with ie .menubar = 0 .toolbar = 0 .statusbar = 0 .addressbar = 0 .resizable = bResizable .navigate "about:blank" while .busy: wend on error resume next do 'occasionally IE still won't be ready... err.clear set oDocument = .document loop while err on error goto 0 oDocument.open If Debug Then wscript.echo getresource("html") End If oDocument.write getresource("html") oDocument.close ie.visible= True while .busy: wend set oMsgRegionA = oDocument.all.regionA sTableHTML = oMsgRegionA.outerHTML set oWindow = .document.parentWindow with oDocument.parentWindow.screen with ie .width = .width / 1.5 .height = .height / 1.5 .left = (.width - ie.width) /2 .top = (.height - ie.height) /2 end with end with end with put_title(sTitle) oDocument.body.style.font = "normal normal 12pt 'Arial'" oDocument.all.regionA.style.font = oDocument.body.style.font oDocument.body.style.color = "black" oDocument.all.regionA.style.color = oDocument.body.style.color oDocument.body.style.background = "white" sTableHTML = oMsgRegionA.outerHTML ExecuteGlobal getresource("code") WSCript.sleep 100 oDocument.body.style.background = "#AAAACC" if Debug then oDocument.body.innerhtml = "<pre>" oDocument.body.innerhtml = oDocument.body.innerhtml & _ VBNEWLINE & _ "oDocument.body: " & tYPEnAME(oDocument.body) oDocument.body.innerhtml = oDocument.body.innerhtml & _ VBNEWLINE & _ "oDocument.body.innerhtml: " & tYPEnAME(oDocument.body.innerhtml) oDocument.body.innerhtml = oDocument.body.innerhtml & _ VBNEWLINE & _ "oMsgRegionA: " & tYPEnAME(oMsgRegionA) oDocument.body.innerhtml = oDocument.body.innerhtml & _ VBNEWLINE & _ "oMsgRegionA.INNERHTML: " & tYPEnAME(oMsgRegionA.INNERHTML) oDocument.body.innerhtml = oDocument.body.innerhtml & _ VBNEWLINE & _ "</pre>" end if oMsgRegionA.INNERHTML = oMsgRegionA.INNERHTML & "<pre>" & _ VBNEWLINE & _ spDtOut & _ "</pre>" oMsgRegionA.style.visibility = "visible" Dim oMsgRegionB set oMsgRegionB = oDocument.all.regionB oMsgRegionB.INNERHTML = oMsgRegionB.INNERHTML & "<pre>" & _ VBNEWLINE & _ getResource("title") & _ "</pre>"
oMsgRegionB.style.visibility = "visible"
WSCript.sleep 1000 '== Property Procedures ===
function get_top() get_top = ie.top end function
function put_top(newValue) if not isnumeric(newValue) then exit function ie.top = newValue end function
function get_left() get_left = ie.left end function
function put_left(newValue) if not isnumeric(newValue) then exit function ie.left = newValue end function
function get_height() get_height = ie.height end function
function put_height(newValue) if not isnumeric(newValue) then exit function ie.height = newValue end function
function get_width() get_width = ie.width end function
function put_width(newValue) if not isnumeric(newValue) then exit function ie.width = newValue end function
function get_title() get_title = sTitle end function
function put_title(newValue) sTitle = newValue oDocument.title = sTitle & string(256," ") ' end function
function get_font() get_font = oDocument.body.style.font end function
function put_font(newValue) on error resume next oDocument.body.style.font = newValue oDocument.all.regionA.style.font = oDocument.body.style.font end function
function get_color() get_color = oDocument.body.style.color end function
function put_color(newValue) on error resume next oDocument.body.style.color = newValue oDocument.all.regionA.style.color = oDocument.body.style.color end function
function get_background() get_background = oDocument.body.style.background end function
function put_background(newValue) on error resume next oDocument.body.style.background = newValue end function
function get_resizable() if not isnumeric(newValue) then exit function get_resizable = bResizable end function
function put_resizable(newValue) if not isnumeric(newValue) then exit function bResizable = Cbool(abs(newValue)) ie.resizable = bResizable end function
function get_timestamp() get_timestamp = bTimestamp end function
function put_timestamp(newValue) if not isnumeric(newValue) then exit function bTimestamp = Cbool(abs(newValue)) end function
function get_autoscroll() get_autoscroll = bAutoscroll end function
function put_autoscroll(newValue) if not isnumeric(newValue) then exit function bAutoscroll = Cbool(abs(newValue)) end function
function put_buffer(newValue) if not isnumeric(newValue) then exit function bBuffer = Cbool(abs(newValue)) if bBuffer = True then set oBuffer = new CBuffer else set oBuffer = Nothing end if end function
function get_buffer() get_buffer = bBuffer end function
function put_encodeBuffer(newValue) if not isnumeric(newValue) then exit function bEncodeBuffer = Cbool(abs(newValue)) end function
function get_encodeBuffer() get_encodeBuffer = bEncodeBuffer end function
function get_win() set get_win = oWindow end function
function get_doc() set get_doc = oDocument end function
function get_header() set get_header = oDocument.all.divHeader end function
function get_footer() set get_footer = oDocument.all.divFooter end function
function get_closed() get_closed = true on error resume next get_closed = (Typename(oDocument) = "Object") end function
function get_IEVersion() dim ua ua = oWindow.navigator.useragent get_IEVersion = split(trim(split(ua,";")(1))," ")(1) end function
function get_OS() dim ua ua = oWindow.navigator.useragent get_OS = replace(trim(split(ua,";")(2)),")","") end function
'== Public Methods == function write(byval sText) dim cell set write = nothing if bTimestamp then sText = GetTimestamp(false) & sText end if if bBuffer then if bEncodeBuffer then oBuffer.queue SimpleEncode(sText) else oBuffer.queue sText end if exit function end if set cell = oMsgRegionA.insertRow.insertCell cell.nowrap = true cell.innerText = sText if bAutoscroll then cell.scrollintoview set write = cell end function
function flush() set flush = nothing if bBuffer then if oBuffer.count then bFlushing = true set flush = WriteBlock(oBuffer.contents) bFlushing = false oBuffer.clear end if end if end function
function writeBlock(byval sText) if bBuffer and not bFlushing then if bEncodeBuffer then sText = SimpleEncode(sText) end if end if sText = "<pre style='margin-top:0;margin-bottom:0;" _ & "font:" _ & replace(oDocument.body.style.font,"'",chr(34)) _ & ";'>" _ & sText & "</pre>" bBlockWriting = true set writeBlock = writeHTML(sText) bBlockWriting = false end function
function writeHTML(byval sHtml) dim cell set writeHTML = nothing if bTimestamp and not (bFlushing or bBlockWriting) then sHtml = GetTimestamp(true) & sHtml end if if bBuffer and not bFlushing then oBuffer.queue sHtml exit function end if set cell = oMsgRegionA.insertRow.insertCell cell.nowrap = false cell.innerHTML = sHtml if bAutoscroll then cell.scrollintoview set writeHTML = cell end function
function skip(nLines) Dim n for n = 1 to abs(cint(nLines)) set skip = writeHTML(" ") next end function
function clear() oMsgRegionA.outerHTML = sTableHTML set oMsgRegionA = oDocument.all.regionA oMsgRegionA.style.font = oDocument.body.style.font oMsgRegionA.style.color = oDocument.body.style.color end function
function clearBuffer if bBuffer then oBuffer.clear end if end function
function show ie.visible = 1 end function
function hide ie.visible = 0 end function
function center with oDocument.parentWindow.screen ie.left = (.availWidth - ie.width) /2 ie.top = (.availHeight - ie.height) /2 end with end function
function resizeByPercent(byval nPercentWidth, byval nPercentHeight) if not isnumeric(nPercentWidth) then exit function if not isnumeric(nPercentHeight) then exit function if nPercentWidth > 100 then nPercentWidth = 100 if nPercentHeight > 100 then nPercentHeight = 100 with oDocument.parentWindow.screen ie.width = .availWidth * (nPercentWidth/100) ie.height = .availHeight * (nPercentHeight/100) end with end function
sub complete() flush oWindow.bComplete = true end sub
function close on error resume next oWindow.bComplete = true ie.quit on error goto 0 end function
function HTMLEncodeText(sText) Dim n ReDim chars(len(sText)-1) for n = 1 to len(sText) chars(n-1) = E__(asc(mid(sText,n,1))) next HTMLEncodeText = join(chars,"") end function
'== Private Procedures == ' private function GetTimestamp(bHtml) dim timestamp timestamp = right(" " & formatdatetime(time(),vblongtime) & " ",12) if bHtml then GetTimestamp = replace(timestamp," "," ") else GetTimestamp = timestamp end if end function
function SimpleEncode(sText) SimpleEncode = replace(replace(sText,"&","&"),"<","<") end function
'== Private Classes == ' class CBuffer private ds private i private delim sub class_initialize me.clear delim = vbcrlf end sub sub clear ds = array() i = -1 end sub sub queue(str) i = i+1 redim preserve ds(i) ds(i) = str end sub property get contents() contents = join(ds,delim) end property property get count() count = ubound(ds)+1 end property property get delimiter() delimiter = delim end property property let delimiter(arg) delim = arg end property end class
]]> </script> <!-- Resources --> <resource id="html"> <![CDATA[ <html> <head> <script language="vbscript"> dim bComplete bComplete = false msg = _ "The calling script has not indicated that it has completed." & vbcrlf & _ "Closing this window may cause the calling script to fail." sub confirm_close if bComplete then exit sub window.event.returnvalue = msg end sub set window.onbeforeunload = getref("confirm_close") </script> </head> <body> <table border="0" width="70%" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#7799EE"> <div id="regionB"> </td> </tr> <tr> <td bgcolor="#AAAACC"> <div id="regionA"> </td>
</tr> </div></table> </body> </html> ]]> </resource> <resource id="code"> <![CDATA[ Dim E__(255) E__(0) = chr(0) E__(1) = chr(1) E__(2) = chr(2) E__(3) = chr(3) E__(4) = chr(4) E__(5) = chr(5) E__(6) = chr(6) E__(7) = chr(7) E__(8) = chr(8) E__(9) = vbTab E__(10) = vbLf E__(11) = chr(11) E__(12) = chr(12) E__(13) = vbCr E__(14) = chr(14) E__(15) = chr(15) E__(16) = chr(16) E__(17) = chr(17) E__(18) = chr(18) E__(19) = chr(19) E__(20) = chr(20) E__(21) = chr(21) E__(22) = chr(22) E__(23) = chr(23) E__(24) = chr(24) E__(25) = chr(25) E__(26) = chr(26) E__(27) = chr(27) E__(28) = chr(28) E__(29) = chr(29) E__(30) = chr(30) E__(31) = chr(31) E__(32) = " " E__(33) = "!" E__(34) = """ E__(35) = "#" E__(36) = "$" E__(37) = "%" E__(38) = "&" E__(39) = "'" E__(40) = "(" E__(41) = ")" E__(42) = "*" E__(43) = "+" E__(44) = "," E__(45) = "-" E__(46) = "." E__(47) = "/" E__(48) = "0" E__(49) = "1" E__(50) = "2" E__(51) = "3" E__(52) = "4" E__(53) = "5" E__(54) = "6" E__(55) = "7" E__(56) = "8" E__(57) = "9" E__(58) = ":" E__(59) = ";" E__(60) = "<" E__(61) = "=" E__(62) = ">" E__(63) = chr(63) E__(64) = "@" E__(65) = "A" E__(66) = "B" E__(67) = "C" E__(68) = "D" E__(69) = "E" E__(70) = "F" E__(71) = "G" E__(72) = "H" E__(73) = "I" E__(74) = "J" E__(75) = "K" E__(76) = "L" E__(77) = "M" E__(78) = "N" E__(79) = "O" E__(80) = "P" E__(81) = "Q" E__(82) = "R" E__(83) = "S" E__(84) = "T" E__(85) = "U" E__(86) = "V" E__(87) = "W" E__(88) = "X" E__(89) = "Y" E__(90) = "Z" E__(91) = "[" E__(92) = "\" E__(93) = "]" E__(94) = "^" E__(95) = "_" E__(96) = "`" E__(97) = "a" E__(98) = "b" E__(99) = "c" E__(100) = "d" E__(101) = "e" E__(102) = "f" E__(103) = "g" E__(104) = "h" E__(105) = "i" E__(106) = "j" E__(107) = "k" E__(108) = "l" E__(109) = "m" E__(110) = "n" E__(111) = "o" E__(112) = "p" E__(113) = "q" E__(114) = "r" E__(115) = "s" E__(116) = "t" E__(117) = "u" E__(118) = "v" E__(119) = "w" E__(120) = "x" E__(121) = "y" E__(122) = "z" E__(123) = "{" E__(124) = "|" E__(125) = "}" E__(126) = "~" E__(127) = "?" E__(128) = "€" E__(129) = chr(129) E__(130) = "‚" E__(131) = "ƒ" E__(132) = "„" E__(133) = "…" E__(134) = "†" E__(135) = "‡" E__(136) = "ˆ" E__(137) = "‰" E__(138) = "Š" E__(139) = "‹" E__(140) = "Œ" E__(141) = chr(141) E__(142) = "Ž" E__(143) = chr(143) E__(144) = chr(144) E__(145) = "‘" E__(146) = "’" E__(147) = "“" E__(148) = "”" E__(149) = "•" E__(150) = "–" E__(151) = "—" E__(152) = "˜" E__(153) = "™" E__(154) = "š" E__(155) = "›" E__(156) = "œ" E__(157) = chr(157) E__(158) = "ž" E__(159) = "Ÿ" E__(160) = " " E__(161) = "¡" E__(162) = "¢" E__(163) = "£" E__(164) = "¤" E__(165) = "¥" E__(166) = "¦" E__(167) = "§" E__(168) = "¨" E__(169) = "©" E__(170) = "ª" E__(171) = "«" E__(172) = "¬" E__(173) = "­" E__(174) = "®" E__(175) = "¯" E__(176) = "°" E__(177) = "±" E__(178) = "²" E__(179) = "³" E__(180) = "´" E__(181) = "µ" E__(182) = "¶" E__(183) = "·" E__(184) = "¸" E__(185) = "¹" E__(186) = "º" E__(187) = "»" E__(188) = "¼" E__(189) = "½" E__(190) = "¾" E__(191) = "¿" E__(192) = "À" E__(193) = "Á" E__(194) = "Â" E__(195) = "Ã" E__(196) = "Ä" E__(197) = "Å" E__(198) = "Æ" E__(199) = "Ç" E__(200) = "È" E__(201) = "É" E__(202) = "Ê" E__(203) = "Ë" E__(204) = "Ì" E__(205) = "Í" E__(206) = "Î" E__(207) = "Ï" E__(208) = "Ð" E__(209) = "Ñ" E__(210) = "Ò" E__(211) = "Ó" E__(212) = "Ô" E__(213) = "Õ" E__(214) = "Ö" E__(215) = "×" E__(216) = "Ø" E__(217) = "Ù" E__(218) = "Ú" E__(219) = "Û" E__(220) = "Ü" E__(221) = "Ý" E__(222) = "Þ" E__(223) = "ß" E__(224) = "à" E__(225) = "á" E__(226) = "â" E__(227) = "ã" E__(228) = "ä" E__(229) = "å" E__(230) = "æ" E__(231) = "ç" E__(232) = "è" E__(233) = "é" E__(234) = "ê" E__(235) = "ë" E__(236) = "ì" E__(237) = "í" E__(238) = "î" E__(239) = "ï" E__(240) = "ð" E__(241) = "ñ" E__(242) = "ò" E__(243) = "ó" E__(244) = "ô" E__(245) = "õ" E__(246) = "ö" E__(247) = "÷" E__(248) = "ø" E__(249) = "ù" E__(250) = "ú" E__(251) = "û" E__(252) = "ü" E__(253) = "ý" E__(254) = "þ" E__(255) = "ÿ" ]]> </resource> </job>
|