'*** v9.5 *** www.dieseyer.de ****************************** ' ' Datei: wim_inhalt.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' zeigt den Inhalt von WIM-Dateien an, die mit IMAGEX.EXE ' erstellt wurden - vergl. ' http://technet.microsoft.com/de-de/library/cc722145.aspx ' Das VBS kann sich selbst als Standard-Anwendung für ' WIM-Dateien eintragen ' ' Das VBS benötigt zwingend ' IMAGEX.EXE ' und fragt ggf. nach dem Ort, wo sich diese Datei befindet. ' '*********************************************************** Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim ProgrExe : ProgrExe = "IMAGEX.EXE" Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim WSHNet : Set WSHNet = WScript.CreateObject("WScript.Network") Dim oArgs : Set oArgs = Wscript.Arguments Dim AktVerz : AktVerz = Replace( WScript.ScriptFullName, WScript.ScriptName, "" ) ' "\" am Ende Dim LogDatei : LogDatei = WScript.ScriptFullName & ".log" LogDatei = AktVerz & fso.GetBaseName( WScript.ScriptFullName ) & ".log" Dim TempVerz : TempVerz = UserTempVerz() & "\" Dim XMLDatei : XMLDatei = TempVerz & fso.GetBaseName( WScript.ScriptFullName ) & ".xml" Dim XSLDatei : XSLDatei = TempVerz & fso.GetBaseName( WScript.ScriptFullName ) & ".xsl" Dim CMDDatei : CMDDatei = TempVerz & fso.GetBaseName( WScript.ScriptFullName ) & ".cmd" Dim HTMDatei : HTMDatei = TempVerz & fso.GetBaseName( WScript.ScriptFullName ) & ".html" Dim Titel : Titel = WScript.ScriptName Dim Txt, Tst Dim WIMDatei, ProgrOK ' Call Trace32Log( "-", 0 ) ' erstellt neue LogDatei Call Trace32Log( " ", 1 ) ' fügt Leerzeile in LogDatei ein Trace32Log " ", 1 ' fügt Leerzeile in LogDatei ein ' WSHShell.Popup "= = = S T A R T = = =", 2, "047 :: " & WScript.ScriptName Trace32Log "048 :: Start " & WScript.ScriptFullName & " ( " & fso.GetFile( WScript.ScriptFullName ).DateLastModified & " )", 1 Trace32Log "049 :: PCname: " & WSHNet.ComputerName, 1 Trace32Log "050 :: Angemeldeter User: " & WSHNet.UserName, 1 Trace32Log "052 :: AktVerz: " & AktVerz , 1 Trace32Log "053 :: LogDatei: " & LogDatei, 1 Trace32Log "054 :: TempVerz: " & TempVerz, 1 Trace32Log "055 :: XMLDatei: " & XMLDatei, 1 Trace32Log "056 :: XSLDatei: " & XSLDatei, 1 Trace32Log "057 :: CMDDatei: " & CMDDatei, 1 Trace32Log "058 :: HTMDatei: " & HTMDatei, 1 ' Anzahl der Argumente testen - min. eins! ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If oArgs.Count < 1 Then Txt = "Das VBS " & Wscript.ScriptName & " benötigt einen WIM-Datei als Parameter!" & vbCRLF & vbCRLF Txt = Txt & "[Ja]" & vbTab & vbTab & "öffnet den ""Datei-Auswahl-Dialog""." & vbCRLF & vbCRLF Txt = Txt & "[Nein]" & vbTab & vbTab & "trägt dieses VBS als Standard-Anwendung" & vbCRLF & vbTab & vbTab & "für WIM-Dateien ein." & vbCRLF & vbCRLF Txt = Txt & "[Abbruch]" & vbTab & "Alles lassen, wie es ist . . . " & vbCRLF & vbTab & vbTab & vbTab & ". . . bei ""Aaaaaaaangst""." & vbCRLF & vbCRLF Tst = MsgBox( Txt, 4096 + vbQuestion + vbYesNoCancel, "067 :: " & WScript.ScriptName ) If Tst = vbYes Then WIMDatei = BFFVerzDateitype( "C:\", "wim" ) If Tst = vbNo Then DateiTypRegistrieren "Wim", WScript.ScriptFullName : WScript.Quit ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If Tst = vbCancel Then WSHShell.Popup " . . . dann eben nicht!", 10, "071 :: " & WScript.ScriptName & " . . . ist zu Ende.", 48 + 4096 : WScript.Quit Else WIMDatei = oArgs.item( 0 ) ' Der erste Parameter Trace32Log "074 :: Als Prameter erhaltene WIM-Datei: " & WIMDatei, 1 End If If Left( WIMDatei, 7 ) = "Fehler:" Then Trace32Log "078 :: Ende " & WScript.ScriptFullName, 1 WScript.Quit End If Txt = WScript.ScriptName & vbCRLF & vbCRLF Txt = Txt & "prüft jetz" & vbCRLF & vbCRLF Txt = Txt & WIMDatei Call PopsUp( Txt, 2 ) 'MsgBox Txt, , "087 :: " Trace32Log "089 :: Zu prüfende WIM-Datei: " & WIMDatei, 1 ' Ist WIMDatei erreichbar? ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If fso.FileExists( WIMDatei ) Then Else Txt = vbCRLF & vbCRLF & "Die Datei ist nicht erreichbar:" & vbCRLF & vbCRLF & WIMDatei WSHShell.Popup "= = = E N D E = = =" & Txt , 15, "096 :: " & WScript.ScriptName, 4096 + vbCritical Trace32Log "097 :: Kann nicht ausgeführt werden: " & ProgrExe & " _ " & Tst, 3 Trace32Log "098 :: Ende " & WScript.ScriptFullName, 1 WScript.Quit End If Trace32Log "101 :: WIM-Datei erreichbar: " & WIMDatei, 1 ' Erreichbarkeit des Programms IMAGEX.EXE prüfen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Call ProgrExeErreichbar ' ' Erreichbarkeit des Programms IMAGEX.EXE prüfen ' ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' On Error Resume Next ' Tst = WSHShell.Run( ProgrExe, 0, True ) ' Tst = err.Number & " - " & err.Description ' On Error GoTo 0 ' If InStr( Tst, "2147024894" ) Then Tst = Tst & "Das System kann die angegebene Datei nicht finden." ' If Len( Tst ) > 4 Then ' Txt = vbCRLF & vbCRLF & "Programm kann nicht gestartet werden: " & vbCRLF & vbCRLF & vbTab & ProgrExe & vbCRLF & vbCRLF & Tst ' WSHShell.Popup vbTab & "= = = E N D E = = =" & Txt , 15, "116 :: " & WScript.ScriptName, 4096 + vbCritical ' Trace32Log "117 :: Kann nicht ausgeführt werden: " & ProgrExe & " _ " & Tst, 3 ' Trace32Log "118 :: Ende " & WScript.ScriptFullName, 1 ' WScript.Quit ' End If ' WIM-Datei prüfen und XML-Datei erzeugen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Txt = ProgrExe & " /XML /CHECK /INFO """ & WIMDatei & """ > """ & XMLDatei & """" CreateObject("Scripting.FileSystemObject").OpenTextFile( CMDDatei, 2, True).WriteLine Txt Trace32Log "126 :: Geschrieben: " & CMDDatei, 1 Trace32Log "127 :: " & Txt, 1 WScript.Sleep 333 Trace32Log "131 :: Wird gestartet: " & CMDDatei, 1 Tst = WSHShell.Run( """" & CMDDatei & """", 0, True ) Trace32Log "135 :: Ist beendet: " & CMDDatei & "; RC: " & Tst, 1 XSLDateiSchreiben XSLDatei, "" ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Trace32Log "140 :: Datei geschrieben: " & XSLDatei, 1 XMLXSLalsHTML WIMDatei, XSLDatei, XMLDatei, HTMDatei ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Trace32Log "145 :: Datei geschrieben: " & HTMDatei, 1 ' HTML-Datei - Name neu festlegen ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Txt = Mid( WIMDatei, 1, InStrRev( WIMDatei, "." ) ) & "html" Trace32Log "151 :: Als neue HTMDatei verwendbar: " & Txt & " ? ? ?", 1 If fso.FileExists( Txt ) Then Trace32Log "153 :: Vorhandene wird gelöscht: " & Txt, 1 On Error Resume Next fso.DeleteFile Txt Tst = err.Number & " - " & err.Description On Error GoTo 0 If Len( Tst ) > 4 Then Trace32Log "159 :: Kann nicht gelöscht werden: " & Txt & " _ " & Tst, 2 End If End if If fso.FileExists( Txt ) Then Trace32Log "164 :: HTMDatei bleibt unverändert: " & HTMDatei, 1 Else On Error Resume Next fso.CopyFile HTMDatei, Txt, True Tst = err.Number & " - " & err.Description On Error GoTo 0 If Len( Tst ) > 4 Then Trace32Log "171 :: Kann nicht erstellt werden: " & Txt & " _ " & Tst, 2 Else Trace32Log "173 :: Erfolgreich kopiert (von .. nach): " & HTMDatei, 1 Trace32Log "174 :: " & Txt, 1 Trace32Log "175 :: " & HTMDatei, 1 HTMDatei = Txt End If End if WScript.Sleep 333 Trace32Log "182 :: Wird gestartet: " & HTMDatei, 1 ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On Error Resume Next CreateObject("WScript.Shell").Run """" & HtmDatei & """", , False ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tst = Err.Number & " - " & Err.Description On Error GoTo 0 If Len( Tst ) > 4 Then CreateObject("WScript.Shell").Run "mshta.exe """ & HtmDatei & """", , False End If Trace32Log "194 :: Ist gestartet: " & HTMDatei, 1 ' WSHShell.Popup "= = = E N D E = = =", 2, "196 :: " & WScript.ScriptName Trace32Log "198 :: Ende " & WScript.ScriptFullName & " ( " & fso.GetFile( WScript.ScriptFullName ).DateLastModified & " )", 1 Wscript.Quit '*********************************************************** Function XMLXSLalsHTML( Titel, DateiXSL, DateiXML, DateiHTM ) '*********************************************************** Dim Txt Txt = Txt & vbCRLF & "Titel: " & vbTab & vbTab & Titel Txt = Txt & vbCRLF & "DateiXSL: " & vbTab & DateiXSL Txt = Txt & vbCRLF & "DateiXML: " & vbTab & DateiXML Txt = Txt & vbCRLF & "DateiHTM: " & vbTab & "'" & DateiHTM & "'" ' MsgBox Txt, , "211 :: " Txt = "" Txt = Txt & vbCRLF & "" Txt = Txt & vbCRLF & "
" Txt = Txt & vbCRLF & "" Txt = Txt & vbCRLF & "