BATch-Dateien - Bginfo erweitern

Erweiterungen der Ausgabe von Bginfo mit Batchfiles

Einleitung

Mit dem Programm BGInfo werden Bildschirm-Hintergrundbilder generiert, wo man diverse Informationen einblenden kann. Es gibt zahlreiche vordefinierte Felder, die man verwenden kann. Zusätzlich können eigene Text-Dateien, VB-Skripte, Ausgaben von WMI-Abfragen, Registry-Werte angezeigt werden.

Vorab:
Sie benötigen die Freeware Bginfo von Sysinternals.

Arbeitsweise

Für die Aktualisierung der Hintergrundinformationen mit Bginfo benötigt man einen Aufruf als Taskplaner. Der normale Aufruf von Bginfo in einer Batchdatei erfolgt mit einem Einzeiler dieser Art:

Bginfo.exe /timer:0  /iq meinset.bgi
einfacher Aufruf von bginfo


Eigene Erweiterungen mit Skripten kann man auf 2 Arten erledigen:

  • Nutzung des benutzerdefinierten Feldes eines VBScripts
  • Nutzung des benutzerdefinierten Feldes einer Dateiausgabe

VBScripte lassen sich also direkt als Custom-Feld integrieren. Eine Beschreibung befindet sich in der Hilfe von Bginfo - daher gehe ich nicht weiter darauf ein.

Um Batch-Dateien zu nutzen, muss man den Umweg über die Dateien nehmen. Ich erweitere dazu meinen Wrapper zum Aufruf von bginfo. Vor dem Aktualisieren des Hintergrundes starte ich zunächst meine Batchdateien, leite deren Ausgabe in eine Datei um. In meinem Set habe ich Custom-Felder mit der Ausgabe von Dateien definiert.

Soweit das Ganze verdaut?

Wenn man schon beim Skripten ist ... wenn sich einige Tests anhäufen würden und die Ausgabe jedes Tests mich mit Infos überhäuft, statt auf wirklich wichtige Sachen hinzuweisen, habe ich nicht viel gekonnt.

Bringen wir also etwas Ordnung in ein vielleicht drohendes Chaos:

  • alle meine Batch-Dateien befinden sich in einem Unterverzeichnis "plugin-scripts"
  • Ich kategorisiere meine Batch-Tests in die Rubrik "Warnungen" und "Fehler"
    Das geht einfach über den Dateinamen - [Name_des_Tests]_warning.bat bzw. [Name_des_Tests]_error.bat.
  • Alle Batchdateien einer Rubrik werden in je eine Textdatei pro Rubrik umgeleitet.
    Mittels FOR-Schleife werden alle Batchfiles in alphabetischer Reihenfolge abgeklappert und umgeleitet - die Warnungen werden nach c:\bginfo_custom_warnings.txt geschrieben und die Fehlermeldungen nach c:\bginfo_custom_errors.txt
  • Um die Informationsflut einzudämmen, geben meine Batchtests nicht in jedem Fall etwas aus, sondern nur, wenn eine Warnung festgestellt wurde.
  • In der GUI von Bginfo werden 2 Customfelder definiert, die die Textdateien für Warnungen und Fehlermeldungen aufnehmen. Dies Customfelder werden in das Ausgabe-Template eingefügt. Wer mag kann die Fehler rot und die Warnungen gelb ausgeben lassen.

Mein Wrapper-Batchfile liegt im selben Ordner, wie Bginfo, sieht dann etwa so aus:

:: -- variables  
set file4Warnings="%appdata%\bginfo\bginfo_custom_warnings.txt"  
set file4Errors="%appdata%\bginfo\bginfo_custom_errors.txt"  
set scriptdir=%~dp0%  
set plugindir=%scriptdir%\plugin-scripts  
set bgifile=%scriptdir%\set001.bgi  
  
:: -- delete the output files first  
del "%file4Warnings%" "%file4Errors%" >nul 2>&1  
  
:: -- create list with warnings ...  
for /F %%a in ('dir /B /S /O:N %plugindir%\*_warning.bat') do ( echo ..... %%a && call %%a >>%file4Warnings% )  
  
:: -- create list with errors ...  
for /F %%a in ('dir /B /S /O:N %plugindir%\*_error.bat') do ( echo ..... %%a && call %%a >>%file4Errors% )  
  
:: -- starting bginfo ...  
%scriptdir%\Bginfo.exe /timer:0  /iq %bgifile%  

Meine Verzeichnisstruktur sieht nun so aus: im Programmverzeichnis befindet sich mein Wrapper (_wrapper_bginfo.bat) und das Template (set001.bgi).
Im Unterordner "plugin-scripts" sind meine einzelnen Tests:

[bginfo-root]
|
|   Bginfo.exe
|   _wrapper_bginfo.bat
|   Eula.txt
|   set001.bgi
|
\---plugin-scripts
        birthday.txt
        birthday_warning.bat
        missing_services_error.bat
        showdate.exe
Verzeichnisstruktur im Programmverzeichnis von bginfo


Das Plugin für Geburtstage wertet Einträge in der birthday.txt aus - hier stehen Namen und Geburtstage in der Form [Jahr-Monat-Tag]:[Name] drin. Es werden die in diesem und nächsten Monat noch folgenden Geburtstage angezeigt.
Es wird hierfür die showdate.exe benötigt.

Das andere Beispiel testet eine (beim ersten Start angelegte) Textdatei mit den Namen der Dienste, ob diese alle laufen.
Dies funktioniert mit Hilfe des Komandos net start.

Screenshots

Nach dem Aufruf von Bginfo:

shot_bginfo_1.png


Durch Klick auf den Schalter Custom kann man eigene Felder definieren:

shot_bginfo_2.png


Mit dem Schalter "add" fügt man sie in das Template ein (man kann die Namen natürlich auch tippen) und anschliessend einfärben. Meine Customfelder sind ganz unten unterhalb "Messages".

shot_bginfo_3.png


Und so kann es dann auf dem Desktop aussehen.

shot_bginfo_4.png

Download

examplebginfo.zip (23,1 kB)