'v4.5***************************************************** ' File: eventlog-bluescreen.vbs ' (aus DateiZeilenweiseLesenBearbeitenSchreiben.vbs ) ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' BlueScreens stehen nicht im Eventlog. Um zu sehen, wie oft ' es mögicherweise eine gegeben hat, kann man auswerten, wie ' oft die EventID 6006 (Shutdown) fehlt. ' '************************************************************ Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim WSHShell, fso, FileIn, FileOut Dim Datei, Txt, i, oArgs Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") set oArgs = Wscript.Arguments ' Fals ein Argument übergeben wurde, sollte es einen Dateinamen ' enthalten ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For i = 0 to oArgs.Count - 1 ' hole alle Argumente Datei = oArgs.item(i) If not fso.FileExists( Datei ) then ' MsgBox UCase( Datei ) & " existiert nicht!" & vbCRLF & vbCRLF & " . . . das ist das Ende.", , WScript.ScriptName ' WScript.Quit End If Exit For ' nur das erste Argument reicht Next ' Gibt's keinen Dateinamen, wird das Skript beendet ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if Datei = "" then MsgBox "Datei auf das Skript ziehen und fallen lassen." & vbCRLF & vbCRLF & vbTab & " Das ist das Ende", , WScript.ScriptName WScript.Quit End If Set FileIn = FSO.OpenTextFile(Datei, 1 ) ' Datei zum Lesen öffnen Datei = fso.GetParentFolderName( WScript.ScriptFullName ) & "\" & fso.GetBaseName( Datei ) & "-.txt" Set FileOut = FSO.OpenTextFile( Datei , 2, true) ' Datei zum Screiben öffnen; 2: immer neu anlegen ' alle Zeilen lesen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ i= 1 Do While Not (FileIn.atEndOfStream) ' wenn Datei nicht zu ende ist, weiter machen ' FileOut.WriteLine( vbCRLF & now() & vbCRLF ) ' nur Für Testzwecke Txt = FileIn.ReadLine Txt = Replace( Txt, ".04 " , ".04 " ) Txt = Replace( Txt, " EventLog Informationen --- " , " " ) Txt = Replace( Txt, " --- " , " " ) If Instr( Txt, "6005") Then FileOut.WriteLine( "+ " & Txt & vbTab & i ) : i = i + 1 If Instr( Txt, "6006") Then FileOut.WriteLine( "- " & Txt ) ' If Instr( Txt, "6009") Then FileOut.WriteLine( Txt ) Loop FileIn.Close Set FileIn = nothing FileOut.Close Set FileOuT = nothing ' (Ziel-) Datei anzeigen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WSHShell.run "notepad """ & Datei & """" , , True ' True: Skriptabarbeitung wartet bis Programm (notepade) beendet ist ' (Ziel-) Datei löschen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' fso.DeleteFile( Datei )