Neue
Homepage:
LAB1.de hat einen neuen Namen:
Unsere Tools werden jetzt unter der Adresse
www.ToolsAndMore.de
weitergeführt - klicken Sie bitte den nachstehenden Taster, um dort die
gesuchte Seite in neuester Version zu besuchen.
|
Windows automatisieren:
WinScript
2.7 für Win95/98/Me
Stapeldateien
sind auch unter Windows 95/98/Me auf die triste DOS-Box
beschränkt. Mit dem LAB1.de-Tool können Sie
zumindest die Datenein- und ausgabe auf die
glanzvolle Arbeitsoberfläche holen.
Mit
Winscript können Sie aus hässlichen
Stapeldateien (unten) eine chice Dialogbox mit
entsprechendem Hinweistext (oben) und zum Beispiel den
beiden Schaltfläche "Ja" und "Nein"
machen |
Download:
Den Download dieses Tools können Sie über unsere neue
Homepage
www.ToolsAndMore.de
starten.
Klicken Sie einfach den nachstehenden Taster, um dort hin zu
gelangen:
|
Unbestritten
leisten DOS-Stapeldateien
auch noch im totalen
Windows-Zeitalter allerlei nützliche Dienste.
Zudem können seit Windows 95/98 nun auch (offiziell)
Windows-Applikation über Batches aufgerufen
werden. Doch nach wie vor sind Stapeldateien
allein auf die DOS-Box beschränkt von,
sagen wir, "Win-Batches" kann kein Rede
sein. Das hat zur häßliche Folge, daß beim
Aufruf einer Stapeldatei unter Windows 95/98 auch
jeweils eine DOS-Box geöffnet wird die
dann wie ein schwarzes Loch aus der polierten
Arbeitsoberfläche klafft. Zwar ließe sich
zumindest das Erscheinungformat über die
Eigenschaften der betreffenden Stapeldatei auf
Symbolgröße einstellen. Doch erstens bekommt
man dann nichts vom möglicherweise fehlerhaften
Ablauf mit. Und auch eventuelle Ergebnisausgaben
werden erst nach dem Vergrößern der DOS-Box
sichtbar ach ja, die DOS-Box am Ende zu
schließen nicht vergessen! So gesehen bleibt bei
soviel Ungemach vom Nutzen der Stapeldateien
nicht viel übrig und spaltet das Lager
der Anwender in zwei Gruppen: Die einen werden
kopfschüttelnd auf Batches verzichten. Die
anderen dagegen die DOS-Box (inkl. Norton Commander) nicht mehr verlassen.
Das
fehlende Glied
Doch das muß nicht sein. Man bekäme
alle wieder unter einen Hut, wenn es gelänge,
Anwendereingaben von der Windows-Arbeitsoberfläche
an Stapeldateien zu leiten und eventuelle Fehler-
und Ergebnismeldungen aus den Batches heraus an
die Oberfläche zu bringen. Das ganze natürlich
im adäquaten, zeitgemäßen Windows-Look, ohne
jegliche (sichtbaren) schwarzen DOS-Boxen.
Gesagt
getan: Denn dies ist genau das, was das Tool
Winscript macht. Angenommen, Sie setzen
beispielsweise eine Stapeldatei zum Leeren des
Dokumentenordners im Startmenü ein. Bevor das
Batch loslegt, möchten Sie aber noch eine
Sicherheitsabfrage einfügen. Mit den wenigen zur
Verfügung stehenden Batchbefehlen könnte man
diese Aufgabe mit dem Befehl choice erledigen
was mehr als mäßig aussieht. Mit
Winscript dagegen können Sie ein chice Dialogbox
mit einem entsprechenden Hinweistext und
beispielsweise den beiden Schaltfläche "Ja"
und "Nein" anzeigen lassen.
Das ist aber bei
weitem noch nicht alles. Winscript verfügt in
der aktuellen Fassung über folgende Windows-Elemente,
die alle problemlos in Stapeldateien eingesetzt
werden können:
MessageBox: Nachrichtenfenster mit frei
festlegbaren Dialogtext, bis zu drei Schaltflächen
und verschiedenen Icons
InputBox: Eingabefenster mit frei
festlegbaren Dialogtext für die Eingabe einer
Zeichenkette
ListBox: Listenauswahlfenster mit frei
festlegbaren Dialogtext und Inhalt sowie Single-
und Multiselect-Unterstützung
FileOpenBox: Standard-Dialog zum Öffnen
einer Datei, natürlich mit Unterstützung langer
Dateinamen und Netzlaufwerken
FileSaveBox: Standard-Dialog zum Sichern
einer Datei, ebenfalls mit Unterstützung langer
Dateinamen und Netzlaufwerken
(siehe
auch Neue
Kommandos seit Version 2.5)
So wird
Winscript eingesetzt
Bei der Konzipierung von Winscript wurde
im Auge behalten, daß dem Anwender mit der
eigentlichen Batchsprache ein nur allzu
begrenztes Sprachrepertoir zur Verfügung steht.
Der Aufruf beispielsweise eines
Nachrichtenfensters wie in Abbildung 1 gestaltet
sich daher folgendermaßen:
WinScript
MessageBox Beschreibung.dat
Durch WinScript
wird das Brückenmodul gestartet, dem das
Kommando MessageBox und der Name einer
Beschreibungsdatei übergeben werden, hier
beschreibung.dat. Mit MessageBox wird Winscript
mitgeteilt, daß auf der Arbeitsoberfläche ein
Nachrichtenfenster angezeigt werden soll. In der
Beschreibungsdatei, die ein reines Text-File
darstellt, ist das Aussehen dieses Fensters
festgelegt. Dieser Weg wurde deshalb gewählt, da
ein Befehl an der DOS-Eingabeaufforderung maximal
126 Zeichen lang sein darf. Da aber
beispielsweise allein schon der Dialogtext für
ein Fenster über 1000 Zeichen lang sein kann, fällt
die direkte Angabe als Startparameter aus. Welche
Daten in die Beschreibungsdatei eingetragen
werden müssen, hängt vom betreffenden Befehl ab,
also von der Art des gewünschten Dialogfensters.
Schließlich hat ein Nachrichtenfenster andere
Anforderungen als beispielsweise ein Dialog zum
Sichern einer Datei. Für die Definition des
Nachrichtenfensters aus Abbildung 1 müßten
folgende Angaben in DOS-Einstellungen
Beschreibungsdatei gemacht werden:
1. Zeile:
Der Titelzeilentext
2. Zeile: Die Beschreibung des Icons und
der Schaltflächen
3. und folgende Zeilen: Der Dialogtext
Die
Beschreibungsdatei des gezeigten Beispiels sieht
daher folgendermaßen aus:
Dokumenten-Ordner
leeren
Frage JaNein Rechts
Soll der Ordner "Dokumente"
wirklich geleert werden?
Auf die
Reihenfolge der Angaben ist unbedingt zu achten.
Winscript ermittelt lediglich über die
Zeilenposition, um welche Art von Angabe es sich
handelt. So enthält beispielsweise die erste
Zeile einer Beschreibungsdatei immer für den
Titel eines Fenster. In der zweiten Zeile wird
das Icon mit dem Fragezeichen angefordert, dazu
zwei Schaltflächen mit den Aufschriften "Ja"
und "Nein", wobei die rechte Taste
"Nein" vorausgewählt sein soll. Die
Aufteilung des Dialogtextes auf zwei Zeilen (3.
und 4.) hat zur Folge, daß der Text im Fenster
auch tatsächlich zweizeilig dargestellt wird und
nicht als Zeichenspaghetti erscheint.
Zwecks
Dokumentation können (und sollen) auch
Kommentarzeilen in die Beschreibungsdatei eingefügt
werden. Solche Zeilen müssen mit dem Kommando rem, einem Semikolon (;) oder einem einfachen Anführungszeichen
(') beginnen. Kommentarzeilen werden bei der Zählung
der Datenzeilen natürlich nicht berücksichtigt.
Ein Kommentar in der ersten Zeile einer
Beschreibungsdatei wird also nicht als
Fenstertitel verwendet, sondern die Angaben in
der nachfolgene Zeile sofern diese nicht
auch ein Kommentar ist. Nachfolgend die
kommentierte Beschreibungsdatei des Beispiels:
' Dialog
für die Doku-Löschabfrage
' Titel:
Dokumenten-Ordner leeren
' Icons & Taster:
Frage JaNein Rechts
' Dialogtext:
Soll der Ordner "Dokumente"
wirklich geleert werden?
Beschreibungsdateien
können mit einem ganz normalen Editor wie
Notepad oder Edit als vorgefertigte Textdateien
erstellt werden. Kompakterweise kann man sie aber
auch durch die ausführende Stapeldatei kurz vor
ihrem Einsatz anlegen und gleich danach wieder löschen
lassen:
rem
Beschreibungsdatei INFO vorbereiten:
echo Dokumenten-Ordner leeren > INFO
echo Frage JaNein Rechts >> INFO
echo Soll der Ordner "Dokumente"
>> INFO
echo wirklich geleert werden? >> INFO
So erhält
man Antworten
Damit ist klar, wie man ein
Dialogfenster definiert und anzeigen läßt. Aber
wie werden die an der Oberfläche gemachten
Angaben an die auführende Stapeldatei geleitet?
Hierfür dient die Umgebungsvariable wsresult, in
der die ensprechenden Daten stehen. Angenommen,
der Anwender hätte im Beispiel die Schaltfläche
"Ja" gedrückt, so würde die
Umgebungsvariable wsresult die Zeichenkette
"JA" enthalten andernfalls
"NEIN". Schaltflächenergebnisse in
wsresult sind immer versal geschrieben, damit
eine spätere Auswertung in der ausführenden
Stapeldatei leichter fällt. Wie allgemein
bekannt ist, wird der Inhalt einer
Umgebungsvariable durch Einklammerung mit zwei
Prozentzeichen (%) vorgenommen:
if %wsresult%
== JA goto KillDocs
Wichtig: Bei
manchen Dialogen, wie beispielsweise der
einfachen Eingabebox (InputBox) ist es möglich
keine Angaben zu machen oder einfach die Schaltfläche
"Abbrechen" zu drücken. In diesem Fall
würde die Umgebungsvariable wsresult keinen
Inhalt haben. Das hat zur Folge, daß die oben
gezeigt if-Abfrage zu einem Syntax-Fehler führt,
da das erste Argument anscheinend nicht angegeben
wurde. Um dies zu verhinden, muß ein oder
mehrere zusätzliche Zeichen auf beiden Seiten
des Vergleichs angegeben werden, um immer eine
korrekte Auflösung des Ausdrucks zu gewährleisten:
if
"%wsresult%" == "" goto
KeineEingabe
Hier ein
Beispiel für den kompletten Aufbau:
rem
##########################################
rem Batch zum Leeren des Doku-Ordners im Start-Verz.
rem ##########################################
rem
rem ### Beschreibung für Abfrage vorbereiten:
rem
echo Dokumenten-Ordner leeren > Beschreibung
echo Frage JaNein Rechts >> Beschreibung
echo Soll der Ordner "Dokumente"
>> Beschreibung
echo wirklich geleert werden? >>
Beschreibung
rem
rem ### Abfrage starten:
rem
winscript MessageBox Beschreibung
rem
rem ### Je nach Auswahl weitermachen
rem
if %wsresult% == NEIN goto PrgBeenden
rem
rem ### Ordnerinhalt löschen
rem
deltree /Y %windir%\recent\*.*
rem
rem ### Beschreibung für Info vorbereiten:
rem
echo Dokumenten-Ordner leeren > Beschreibung
echo OK Info >> Beschreibung
echo Der Ordner "Dokumente" wurde
>> Beschreibung
echo vollständig gelöscht! >>
Beschreibung
rem
rem Info starten:
rem
winscript MessageBox Beschreibung
rem
rem ### Aufräumen
rem
:PrgBeenden
del Beschreibung

Die übrigen
Winscript-Befehle, wie beispielsweise der Datei-Dialog
(Abbildung 2) oder die Winscript-Listbox (Abbildung
3), werden analog dem gezeigten Verfahren
angewendet. Die genaue Bestückung der
obligatorischen Beschreibungsdatei geht aus
Tabelle 2 hervor. Vor allem die beiden
Dateidialoge werden sicherlich viel Anwendung
finden. Denn dadurch kann man in Zukunft bei
Batchdateien vollkommen auf die Angabe von
Dateinamen als Startparameter verzichten
das unkomfortable Zusammenhacken der Befehle an
der DOS-Eingabeaufforderung hat damit endlich ein
Ende.

Feintuning
Um
den Winscript-Stapeldateien den letzten Schliff
zu geben, sind in den Eigenschaften der
betreffenden DOS-Batches noch ein paar Ergänzungen
vorzunehmen. Über die Registerkarte Programm
sollte man unbedingt ein anderes, sinnfälligeres
Icon auswählen, als das dröge MS-DOS-Symbol. Außerdem
muß die Option Beim Beenden schließen immer
markiert sein, denn sonst muß man nach dem
Ablauf der Stapeldatei die Arbeitsoberfläche von
Hand aufräumen sprich, die längst
beendeten DOS-Boxen selber schließen. Zudem
sollte das betreffende Batch der besseren Optik
wegen immer als Symbol ausgeführt werden. Die
Zuweisung einer Tastenkombination erleichtert
schließlich den Start Ihres Winscript-Batches
ungemein.
Neue
Kommandos seit Version 2.5
In
dieser Version kamen die beiden Kommandos
CheckDrive sowie CheckLabel hinzu. Ersterer überprüft,
ob sich ein bestimmtes Medium überhaupt
ansprechen läßt. Fehler, die beispielsweise auf
nicht eingelegte Datenträger oder nicht
eingeschaltete Geräte zurückzuführen sind, können
so von vornherein ausgeschlossen werden. Als
Parameter ist (zumindest) der Laufwerkbuchstabe
des zu prüfenden Drives anzugeben. Das Ergebnis
erhält man wie üblich in der Umgebungsvariable
wsresult - sie enthält entweder OK, falls man
problemlos auf den Datenträger zugreifen kann,
bzw. ERROR, falls nicht.

Seit
Version 2.5 bietet WinScript die zwei neuen
Funktionen CheckDrive und CheckLabel für die
sichere Ausführung von Datenträgerzugriffen über
Stapeldateien.
Das ganze könnte
etwa wie folgt realisiert werden:
:test1
winscript checkdrive a
if "%wsresult%" == "OK" goto
ok1
winscript messagebox fehlerinfo1.dat
if "%wsresult%" == "OK" goto
test1
goto abbruch
:ok1
Damit ist zunächst
hardwareseitig sichergestellt, dass das
betreffende Batch korrekt abläuft. Mit der
Funktion CheckLabel kann man anhand des Datenträgernamens
nun noch überprüfen lassen, ob es sich bei dem
eingelegten Medium um das richtige handelt. Bei
dem Aufruf ist neben der betreffenden
Laufwerkskennung auch der erwartete Datenträgernamen
anzugeben. Stimmt der Name des überprüften
Mediums, so liefert die Umgebungsvariable result
den Wert OK - falls nicht ERROR. Auch hierzu ein
Beispiel:
:test2
winscript checklabel a mein_backup
if "%wsresult%" == "OK" goto
ok2
winscript messagebox fehlerinfo2.dat
if "%wsresult%" == "OK" goto
test2
goto abbruch
:ok2
Schließlich
wurde dem Utility auch noch eine komplette Online-Hilfe verpaßt, die man über den Aufruf
WinScript Help
erhält.
Neue
Kommandos seit Version 2.7
Über
das Kommando QueryFolderBox können Sie jetzt auch über
WinScript einen Verzeichnispfad ganz einfach per Dialog eingeben
lassen. Der Aufruf baut sich wie folgt auf:
echo Wo soll die Datei XY
echo gespeichert werden?
winscript queryfolderbox parameter
copy XY %wsresult%
Auf dem Desktop
stellt sich das Ganze dann so dar:

Tabelle
1a:
Die
Winscript-Kommandos im Überblick (Teil 1)
| Befehl |
MessageBox |
InputBox |
ListBox |
| Zweck |
Nachrichten-fenster
mit frei festlegbaren Dialogtext, bis zu
drei Schaltflächen und verschiedenen
Icons |
Eingabe-fenster
mit frei festlegbaren Dialogtext für die
Eingabe einer (vorbestimm- baren)
Zeichenkette |
Listenauswahl-
fenster mit frei festlegbaren Dialogtext
und Inhalt |
Beschreibungs-
datei:
Zeile 1 |
Fenstertitel |
Fenstertitel |
Fenstertitel |
| Zeile 2 |
Icon, Taster und
Vorauswahl (siehe Tabellen 2 bis 4) |
Vorausgewählter
Text, der in der Eingabezeile erscheinen
soll |
Name der
Textdatei, die den Listeninhalt enthält |
| Zeile 3 |
Ab hier sind alle
folgenden Zeilen Dialogtext |
Ab hier sind alle
folgenden Zeilen Dialogtext |
Auswahl:
SINGLESELECT erlaubt nur die Auswahl
eines einzigen Listeneintrags,
MULTISELECT dagegen mehrere |
| Zeile 4 |
- |
- |
STRING bzw.
NUMERIC: Damit werden Listenmarkierungen
entweder als Zeichen- ketten oder num.
Aufzählungen in der Ergebnisvariablen
WSRESULT abgelegt. Wird bsw. der 1., 5.
und der 33, Eintrag gewählt, so enthält
WSRESULT durch NUMERIC die Zeichenkette
"1 5 33" (ohne Anführungszeichen).
Zum Aufsplitten eines MULTISELECT-
Ergebnisses über Batchbefehle bietet
sich das Kommando FOR an. |
| Zeile 5 |
- |
- |
Ab hier sind alle
folgenden Zeilen Dialogtext |
| Ergebnisse in
%wsresult% |
Wert richtet sich
nach dem Beschriftung der zuvor gedrückten
Schaltfläche. War es beispielsweise
"OK", enthält die Variable die
Zeichenkette OK (siehe Tabellen 2 bis 4) |
Variable erhält
den Inhalt des Eingabefeldes. Wurde
abgebrochen, so ist die Variable leer. |
Variable erhält
den ausgewählten Listeneintrag. Sind es
mehrere, so werden sie durch Leerzeichen
voneinander getrennt. Wurde abgebrochen,
so ist die Variable leer. |
Tabelle
1b:
Die
Winscript-Kommandos im Überblick (Teil 2)
| Befehl |
FileOpenBox |
FileSaveBox |
Play |
| Zweck |
Standard-Dialog
zum Öffnen einer Datei |
Standard-Dialog
zum Sichern einer Datei |
Modul zum
Abspielen von WAV-Dateien |
Beschreibungs-
datei:
Zeile 1 |
Fenstertitel |
Fenstertitel |
Name der
abzuspielenden Datei |
| Zeile 2 |
Vorgegebener Name
für die zu öffnende Datei |
Vorgegebener Name
für die zu sichernde Datei |
Warteverhalten:
WAIT wartet, bis die Datei abgespielt
wurde, CONTINUE kehrt sofort zum Batch
zurück |
| Zeile 3 |
Der vorgegebene
Name des Verzeichnisses, das der Dialog
öffnen soll |
Der vorgegebene
Name des Verzeichnisses, das der Dialog
öffnen soll |
- |
| Zeile 4 |
Dateifilter für
den Dialog, Beispiel: Text (*.txt) | *.txt
| Bilder (*.bmp; *.ico) | *.bmp; *.ico |
Dateifilter für
den Dialog, Beispiel: Text (*.txt) | *.txt
| Bilder (*.bmp; *.ico) | *.bmp; *.ico |
- |
| Ergebnisse in
%wsresult% |
Variable erhält
den ausgewählten Dateinamen. Wurde
abgebrochen, so ist die Variable leer. |
Variable erhält
den ausgewählten Dateinamen. Wurde
abgebrochen, so ist die Variable leer. |
Variable wird
nicht verändert. |
Tabelle
1c:
Die
Winscript-Kommandos im Überblick (Teil 3)
| Befehl |
QueryFolderBox |
(leer) |
(leer) |
| Zweck |
Dialog zur
Eingabe eines Pfades über einen Verzeichnisbaum |
|
|
Beschreibungs-
datei:
Zeile 1 |
Ab hier sind alle
folgenden Zeilen Dialogtext |
|
|
| Zeile 2 |
- |
|
|
| Zeile 3 |
- |
|
|
| Zeile 4 |
- |
|
|
| Ergebnisse in
%wsresult% |
Variable erhält
den ausgewählten Pfad. Wurde
abgebrochen, so ist die Variable leer. |
|
|
Tabelle
2:
Die
Bezeichnungen für die Definition der
darzustellenden Schaltfläche(n) beim Winscript-Befehl MessageBox
MessageBox
Schaltflächen-
bezeichnungen |
Abkürzung
der Bezeich-
nungen |
Anzahl der
gezeigten Taster |
Aufschrift der
Schaltflächen
(entsprechen auch den Ergebnissen in %wsresult%
falls gedrückt, aber in versaler
Schreibweise) |
| (keine) |
(keine) |
1 |
OK |
| Ok |
(keine) |
1 |
OK |
| OkAbbrechen |
OA |
2 |
OK, Abbrechen |
| WiederholenAbbrechen |
WA |
2 |
Wiederholen,
Abbrechen |
| JaNein |
JN |
2 |
Ja, Nein |
| JaNeinAbbrechen |
JNA |
3 |
Ja, Nein,
Abbrechen |
Abbrechen-
Wiederholen-
Ignorieren |
AWI |
3 |
Abbrechen,
Wiederholen, Ignorieren |
Tabelle
3:
Die
Bezeichnungen für die Festlegung des
darzustellenden Icons beim Winscript-Befehl
MessageBox
MessageBox-
Icon-Bezeichnungen |
Dargestelltes
Icon |
| (keine) |
(keine) |
| Frage |
Weisse
Sprechblase mit blauem "?" |
| Info |
Weisse
Sprechblase mit blauem "i" |
| Stop |
Weisses "X"
auf rotem Kreis |
| Warnung |
Schwarzes
"!" auf gelbem Dreieck |
Tabelle
4:
Mit
diesen Kennungen legt man beim Winscript-Befehl MessageBox
die Tastenvorauswahl fest
| MessageBox-Vorauswahl-Bezeichnungen |
Voreingestellte
Taste |
| (keine) |
Links |
| Links |
Links |
| Mitte |
Mitte |
| Rechts |
Rechts |
|