Sprungmarken mit dem GOTO Befehl setzen Verfasst am: 10.05.2009, 01:05
Ein GOTO geht zu einer anderen Stelle im BAT-Ablauf. Dazu muss
die gewuenschte Stelle markiert werden, und zwar mit einer Sprungmarke
("Label"). Eine Sprungmarke ist irgend ein Wort mit einem
vorangestellten Doppelpunkt. Beispiel:
:WEITER
Mit dem Befehl GOTO WEITER wuerde also der Ablauf an dieser Stelle
fortgesetzt.
Ein GOTO wird natuerlich erst interessant, wenn er bedingt eingesetzt
werden kann, z.B.:
IF not exist C:\COMMAND.COM GOTO FEHLER
Aber bevor wir auf die IF-Konstruktionen eingehen, zunaechst mal
ein nuetzliches Beispiel ganz ohne IF.
Beispiel: GO.BAT
Angenommen es gibt diverse Programme in verschiedenen Verzeichnissen,
die jederzeit zu starten sein sollen, ohne dass man deswegen
alle diese Verzeichnisse im PATH angeben will (der ist ja
eh' schon lang genug).
Man braucht also eine BAT-Datei, die den noetigen Verzeichniswechsel
(CD) und dann den Aufruf ausfuehrt. Fuer jedes Programm
eine eigene BAT-Datei zu schreiben ist kein Kunststueck. Aber wie
kann man verschiedene Aufrufe in _einer_ BAT-Datei steuern?
Ganz einfach. Nennen wir die BAT-Datei: GO.BAT
Sie enthaelt zunaechst die Befehle:
@echo off
GOTO %1
Der Ablauf springt also direkt zu der Marke, die zum GO-Befehl
angegeben wird. Als Marken dienen die Programmnamen oder irgendwelche
Abkuerzungen, die man sich leicht merken kann. Fuer jedes
Programm wird nun eine kleine Aufruf-Routine geschrieben, z.B.:
:TERM (Marke, anzugeben)
CD \MODEM\FD (Verzeichnis-Wechsel)
FD /T (Programm-Aufruf)
GOTO ENDE (BAT-Datei beenden)
Natuerlich koennen auch weitere Befehle (z.B. Laden residenter
Programme, SET..) in diese kleine Routine aufgenommen werden.
Ganz am Ende der BAT-Datei darf die Marke :ENDE nicht fehlen.
Empfehlenswert auch ein anschliessendes CD \
Damit lassen sich nun alle moeglichen Programme nach diesem Muster
aufrufen:
GO TERM
Falls man allerdings kein Ziel oder ein falsches angibt, meldet
DOS "Sprungmarke nicht gefunden" und bricht ab.
Jetzt noch einige Hinweise, die fuer den Umgang mit Labels wichtig
sind.
Gueltige Labels
Eine Sprungmarke darf beliebig lang sein, aber DOS ignoriert
alles, was ueber 8 Stellen hinausgeht !! Falls mehrere Marken
vorkommen, die (in den ersten 8 Stellen) gleich sind, wird immer
nur die erste gefunden.
Wenn Sonderzeichen verwendet werden, bitte nur solche, die auch
in Dateinamen gueltig sind (ausser "%"). Andere Sonderzeichen sind
Trennzeichen. Vorsicht: Ein "?" ist z.B. gueltig, aber ein "*"
ist absolut unbrauchbar. Am besten: keine dubiosen Sonderzeichen
verwenden!
Nach dem Leerzeichen oder Trennzeichen wird der Rest der Zeile
ignoriert. Dies sollte zur Kommentierung genutzt werden!
Ersatz fuer REM
Labels koennen hervorragend fuer Bemerkungen missbraucht werden,
zumal dabei ausnahmsweise auch die Umleitungszeichen <|> bedenkenlos
verwendet werden duerfen. Damit man gleich sieht, dass es sich
nicht um eine echte Sprungmarke handelt, hat sich der doppelte
Doppelpunkt eingebuergert, z.B.:
:: Syntax: MOP <Quelldatei> <Zieldatei> [/M|/X]
Sprungziel im GOTO-Befehl
Auch beim GOTO darf der angegebenen Sprungmarke ein Doppelpunkt
vorangestellt werden (Geschmacksache), z.B.:
GOTO :WEITER _________________