' ' Datei: temp-hilfe.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' '*** v8.4 *** www.dieseyer.de ******************************* ' ' Datei: temp-hilfe.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' Da im Kopf eines Skripts häufig Erklärungen zur Funktion ' des Skripts hinterlegt sind, kann mit der Sub-Prozedur ' TempHilfeTxt( VBSDatei ) ' oder ' TempHilfeHta( VBSDatei ) ' eine Hilfe in ein beliebiges Skript integriert werden - ' angezeigt als TXT-Datei (in Notepad) oder als HTA-Datei ' (mit mshta.exe). ' ' Die Prozedur erstellt eine temporäre Datei, in die der Kopf ' des aufrufenden Skripts eingefügt wird. Beginnen und enden ' muss dazu der Text mit: ' '*** (ein Hochkomma, gefolgt von 3 Sternchen) ' oder ' ' *** (ein Hochkomma, ein Leerschritt, 3 Sterne) ' ' Die Tmp-Datei wird im Tmp-Ordner des angemeldeten Users ' angelegt und nach dem Anzeigen gelöscht. ' ' HilfeTxtDatei( ZielDatei ) ' Diese Prozedur schreibt den Kopf eines Skripts in eine ' Textdatei - z.B. LiesMich.txt: ' HilfeTxtDatei( "LiesMich.txt" ) ' '************************************************************ Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl ' Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") ' WSHShell.Popup "= = = S T A R T = = =", 2, "031 :: " & WScript.ScriptName Call TempHilfeTxt( "trace32log.vbs" ) ' Sub-Prozedur - Aufruf Call TempHilfeHta( WScript.ScriptFullName ) ' Sub-Prozedur - Aufruf Call HilfeTxtDatei( "LiesMich.txt" ) ' Sub-Prozedur - Aufruf; erzeugt aus dem VBS-Kopf eine HilfeDatei ' WSHShell.Popup "= = = E N D E = = =", 2, "039 :: " & WScript.ScriptName WScript.Quit '*** v8.3 *** www.dieseyer.de ******************************* Sub TempHilfeTxt( QuellDatei ) '************************************************************ Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim TmpDatei : TmpDatei = fso.GetSpecialFolder( 2 ) & "\" & fso.GetTempName Dim FileOut, FileIn, Txt, Tst, TxtBereich, ZielDatei ' TmpDatei als Txt-Datei ZielDatei = Mid( TmpDatei, 1, InStrRev( TmpDatei, "." ) ) & "txt" ' MsgBox vbTab & "ZielDatei: " & vbCRLF & vbCRLF & ZielDatei, , "057 :: " & WScript.ScriptName TxtBereich = "-Ja" Set FileIn = fso.OpenTextFile( QuellDatei, 1 ) Do While Not ( FileIn.atEndOfStream ) Tst = FileIn.Readline If TxtBereich = "Ja" AND InStr( Tst, "'***" ) = 1 Then Txt = Txt & Tst & vbCRLF : Exit Do If TxtBereich = "Ja" AND InStr( Tst, "' ***" ) = 1 Then Txt = Txt & Tst & vbCRLF : Exit Do If TxtBereich = "-Ja" AND InStr( Tst, "'***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "-Ja" AND InStr( Tst, "' ***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "Ja" Then Txt = Txt & Tst & vbCRLF Loop Set FileOut = fso.OpenTextFile( ZielDatei, 2, true) FileOut.Write( Txt ) FileOut.Close Set FileOut = Nothing ' WSHShell.Run ZielDatei, , True ' wartet nicht auf das Schließen der Anzeige WSHShell.Run "notepad " & ZielDatei, , True fso.DeleteFile ZielDatei, True End Sub ' TempHilfeTxt( QuellDatei ) '*** v8.3 *** www.dieseyer.de ******************************* Sub TempHilfeHta( Datei ) '************************************************************ Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim TmpDatei : TmpDatei = fso.GetSpecialFolder( 2 ) & "\" & fso.GetTempName Dim FileOut, FileIn, Txt, Tst, TxtBereich ' TmpDatei als htm-Datei TmpDatei = Mid( TmpDatei, 1, InStrRev( TmpDatei, "." ) ) & "htm" ' TmpDatei als hta-Datei TmpDatei = Mid( TmpDatei, 1, InStrRev( TmpDatei, "." ) ) & "hta" ' MsgBox vbTab & "TmpDatei: " & vbCRLF & vbCRLF & TmpDatei, , "096 :: " & WScript.ScriptName Txt = "" Txt = Txt & vbTab & "099 :: """ & Datei & """, letzte " & vbCRLF Txt = Txt & vbTab & "100 :: " & "Änderung vom " & fso.GetFile( Datei ).DateLastModified & ", enthält" & vbCRLF Txt = Txt & vbTab & "101 :: " & "folgende Infos:" & vbCRLF & vbCRLF TxtBereich = "-Ja" Set FileIn = fso.OpenTextFile( Datei, 1 ) Do While Not ( FileIn.atEndOfStream ) Tst = FileIn.Readline If TxtBereich = "Ja" AND InStr( Tst, "'***" ) = 1 Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF : Exit Do If TxtBereich = "Ja" AND InStr( Tst, "' ***" ) = 1 Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF : Exit Do If TxtBereich = "-Ja" AND InStr( Tst, "'***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "-Ja" AND InStr( Tst, "' ***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "Ja" Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF ' entfernt das führende ' (Hochkomma) Loop Tst = "
" Tst = Tst & vbCRLF & "" 'sorgt dafür, dass KEINE Proportionalschrift verwendet wird Txt = Tst & vbCRLF & Txt & vbCRLF & "" Set FileOut = fso.OpenTextFile( TmpDatei, 2, true) FileOut.Write( Txt ) FileOut.Close Set FileOut = Nothing ' WSHShell.Run "mshta.exe " & TmpDatei ' WSHShell.Run """" & TmpDatei & """" WSHShell.Run TmpDatei, , True ' Bei der Anzeige einer HTM(L)-Datei im Browser kann nicht auf ' das Ende der Anwendung / Anzeige gewartet werden - also darf ' auch die Datei, die gerade angezeigt wird, nicht gelöscht ' werden. ' Bei einer HTA-Datei ist das anders . . . fso.DeleteFile TmpDatei, True End Sub ' TempHilfeHta( Datei ) '*** v8.4 *** www.dieseyer.de ******************************* Sub HilfeTxtDatei( ZielDatei ) '************************************************************ Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim TmpDatei : TmpDatei = fso.GetSpecialFolder( 2 ) & "\" & fso.GetTempName Dim FileOut, FileIn, Txt, Tst, TxtBereich ' Temporäre Datei als Ziel-Txt-Datei ' ZielDatei = Mid( TmpDatei, 1, InStrRev( TmpDatei, "." ) ) & "txt" ' MsgBox vbTab & "ZielDatei: " & vbCRLF & vbCRLF & ZielDatei, , "820 :: " & WScript.ScriptName Txt = "" ' Txt = Txt & vbTab & "823 :: """ & WScript.ScriptFullName & """, letzte " & vbCRLF ' Txt = Txt & vbTab & "824 :: " & "Änderung vom " & fso.GetFile( WScript.ScriptFullName ).DateLastModified & ", enthält" & vbCRLF ' Txt = Txt & vbTab & "825 :: " & "folgende Infos:" & vbCRLF & vbCRLF TxtBereich = "-Ja" Set FileIn = fso.OpenTextFile( WScript.ScriptFullName, 1 ) Do While Not ( FileIn.atEndOfStream ) Tst = FileIn.Readline If TxtBereich = "Ja" AND InStr( Tst, "'***" ) = 1 Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF : Exit Do If TxtBereich = "Ja" AND InStr( Tst, "' ***" ) = 1 Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF : Exit Do If TxtBereich = "-Ja" AND InStr( Tst, "'***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "-Ja" AND InStr( Tst, "' ***" ) = 1 Then TxtBereich = "Ja" If TxtBereich = "Ja" Then Txt = Txt & Mid( Tst, 2 ) & vbCRLF ' entfernt das führende ' (Hochkomma) Loop Set FileOut = fso.OpenTextFile( ZielDatei, 2, True) FileOut.Write( Txt ) FileOut.Close Set FileOut = Nothing WSHShell.Run ZielDatei, , True ' fso.DeleteFile ZielDatei, True End Sub ' HilfeTxtDatei( ZielDatei )