HowTo: |
Fortschrittsanzeigen für VB Scripts mit Text-basierter Ausgabe |
Manchmal werkeln Skripte lange vor sich hin, ohne dass an der Oberfläche etwas davon sichtbar ist. Es werden zum Beispiel minutenlang Ausgaben in eine Datei geschrieben - der Benutzer jedoch fragt sich, ob das Skript noch läuft oder es schon abgestürzt ist. Abhilfe schaffen hier Skript-Bestandteile, die für einzelne Schritte einen Punkt ausgeben (jedoch ohne Zeilenvorsprung):
For i = 1 To 500
Wscript.Stderr.Write(".") ' hier wird kein Zeilenumbruch erzeugt!
WScript.Sleep(10) ' ein bisschen warten, sonst sieht man nix...
Wscript.Stderr.Write(".") ' hier wird kein Zeilenumbruch erzeugt!
WScript.Sleep(10) ' ein bisschen warten, sonst sieht man nix...
Eine Variante: Einen sich drehenden Balken, der eine Aktion anzeigt:
e = 0 '
Rotate Array initialisieren
rotate = Array("|", "/", "-", "\")
For i = 1 To 500
e = e + 1 : If (e = 4) Then e = 0 ' e immer von 0-3 rotieren
Wscript.Stderr.Write(rotate(e)) ' Zeichen hinschreiben
WScript.Sleep(50) ' ein bisschen warten, sonst sieht man nix...
Wscript.Stderr.Write(Chr(8)) ' danach mit Backspace löschen
Next
rotate = Array("|", "/", "-", "\")
For i = 1 To 500
e = e + 1 : If (e = 4) Then e = 0 ' e immer von 0-3 rotieren
Wscript.Stderr.Write(rotate(e)) ' Zeichen hinschreiben
WScript.Sleep(50) ' ein bisschen warten, sonst sieht man nix...
Wscript.Stderr.Write(Chr(8)) ' danach mit Backspace löschen
Next
Achtung: Die hier vorgestellten Tipps gelten für Skripte, die mit cscript aufgerufen werden. Verwenden Sie stattdessen wscript, bekommen Sie 500 MsgBox-Ausgaben, die bestätigt werden müssen.