http://dieseyer.de • all rights reserved • © 2011 v11.4

'
' 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 = "<head>"
Tst = Tst & vbCRLF & "<title>Info zu """ & WScript.Scriptname & """</title>"
Tst = Tst & vbCRLF & "< HTA:APPLICATION ID=""" & WScript.Scriptname & """ "
' Mein Virenscanner meckert, wenn sich im VBS in "< HT" kein Leerzeichen befindet
Tst = Replace( Tst, "< HT", "<HT" )
Tst = Tst & vbCRLF & "SCROLL=""yes"" "
Tst = Tst & vbCRLF & "SHOWINTASKBAR=""yes"" "
Tst = Tst & vbCRLF & "NAVIGABLE=""yes"" "
Tst = Tst & vbCRLF & "APPLICATIONNAME=""" & WScript.Scriptname & """ >"
Tst = Tst & vbCRLF & "</head><body>"
Tst = Tst & vbCRLF & "</head><body><pre>" ' <pre> sorgt dafür, dass KEINE Proportionalschrift verwendet wird

Txt = Tst & vbCRLF & Txt & vbCRLF & "</pre></head><body>"

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 )

http://dieseyer.de • all rights reserved • © 2011 v11.4