Grundlagen Batchprogrammierung für Anfänger Verfasst am: 17.04.2009, 09:55
Die Grundidee der Batch-Ablaeufe ("Stapelverarbeitung") ist die
automatische Abarbeitung von Programmen und Befehlen, z.B. um nach
dem Einschalten des Computers eine Reihe von residenten Programme
zu installieren (AUTOEXEC.BAT).
DOS bietet dazu die Moeglichkeit, Befehle aus einer ASCII-Datei
zeilenweise abzuarbeiten, so als wuerden sie nacheinander auf der
Befehlsebene eingegeben. Eine solche Datei muss den Namenszusatz
"BAT" haben, und ist damit - neben COM- und EXE-Dateien - eine
weitere Variante der "ausfuehrbaren" Dateien, die als Befehl auf
der DOS-Ebene aufgerufen werden koennen.
Damit ein BAT-Ablauf mehr ist, als nur eine einfache Folge von
Programm-Aufrufen, gibt es besondere Anweisungen und Eigenschaften,
die einfache Funktionen einer Programmiersprache bieten:
Die BAT-Sprache ist allerdings von Microsoft auesserst spaerlich
ausgestattet worden, und sie unterstuetzt vor allem keinerlei
Bildschirmdialoge, etwa fuer Eingaben oder zur Auswahl durch den
Benutzer. (Seit Ver. 6.0 gibt's allerdings CHOICE.)
Aus diesem Grunde sind schon viele nuetzliche Erweiterungen der
BAT-Sprache entwickelt worden (BAT Enhancements), die aber meist
nur isolierte Befehle bieten, ohne die BAT-Sprache selbst (d.h.
die Programm-Logik) zu verbessern.
Das Problem liegt darin, dass der BAT-Prozessor von DOS fester
Bestandteil von COMMAND.COM ist, also kein separates Programm,
das man so einfach durch ein besseres ersetzen koennte. Das oft
zitierte 4DOS ersetzt COMMAND.COM komplett und kann daher mit
einem eigenen, erheblich erweiterten BAT-Prozessor aufwarten.
Soviel zu BAT-Erweiterungen.
BAT-Datei, ASCII
Um BAT-Dateien zu schreiben, braucht man einen ASCII-Editor.
Wer nichts besseres hat, kann EDIT von MS-DOS benutzen. Das alte
EDLIN frueherer DOS-Versionen sollte man sich allerdings nicht
zumuten.
Eine BAT-Datei darf nur ASCII-Zeilen mit einer Laenge von maximal
127 Zeichen enthalten. Das Zeilen-Ende wird durch CR+LF (ASCII
13,10) bestimmt, wobei das LF auch fehlen darf. Das Datei-Ende
kann durch den EOF-Code (Control-Z, ASCII 26) markiert werden, was
aber heute kaum noch ueblich ist.
Alle uebrigen ASCII-Zeichen (1..255) duerfen verwendet werden.
Allerdings koennen Sonderzeichen eine besondere Bedeutung haben!
Allgemein gilt: Sonderzeichen, die auch in Dateinamen gueltig
sind, werden wie Buchstaben behandelt. Sonstige Sonderzeichen
sowie "%" bitte nur ganz bewusst und mit Absicht verwenden!
(Naeheres bei den jeweiligen Befehlen.)
Leerzeilen werden ignoriert (wie ein CR auf der Befehlsebene),
koennen also zur besseren Lesbarkeit eingebaut werden.
Abarbeitung durch DOS
Zur Kontrolle des Ablaufs legt COMMAND.COM beim Start im Arbeitsspeicher
einen BAT-Steuerblock an, der am Ende wieder entfernt
wird (64 Bytes oder auch etwas mehr). In diesem Steuerblock wird
unter anderem ein Zeiger auf die naechste auszufuehrende Zeile der
BAT-Datei verwaltet.
Fuer jede einzelne Befehlszeile des BAT-Ablaufs wird von DOS die
BAT-Datei geoeffnet, gelesen und geschlossen. Grundsaetzlich kann
also eine BAT-Datei auch veraendert werden, waehrend sie laeuft,
was man allerdings mit Vorsicht geniessen sollte. Auf jeden Fall
sollte man vermeiden, in einem BAT-Ablauf den Editor aufzurufen,
um eben diese BAT-Datei zu aendern. Das bringt die Abarbeitung mit
hoher Wahrscheinlichlkeit durcheinander!
Fehler in BAT-Ablauf, Abbruch
Bei ungueltigen Befehlen oder Syntax-Fehlern gibt DOS eine Meldung
aus und setzt die Verarbeitung (wenn moeglich) mit der naechsten
Zeile fort.
Da DOS nicht die Zeilen-Nummer des Fehlers angibt, muss man notfalls
ECHO ON schalten, um den Ablauf zu verfolgen (s. Kapitel
ECHO).
Eine laufende BAT-Datei laesst sich normalerweise mit Control-C
oder Control-BREAK (Strg-Unterbr.) abbrechen. DOS erwartet dann
noch eine Bestaetigung:
Stapelverarbeitung abbrechen? (J/N)
Ob sich ein gerde ausgefuehrtes PROGRAMM abbrechen laesst ist
natuerlich eine andere Frage. _________________