| Zweck: | Verzweigung zu einer bestimmten Zeile innerhalb der aktuellen Batch-Datei |
| Format: | GOTO [/I] label |
| label | Das Label der Batchdatei, zu der verzweigt werden soll. |
Verwendung:
GOTO kann nur in Batchdateien verwendet werden.
Nach einem GOTO-Befehl in einer Stapeldatei wird als nächste Zeile diejenige ausgeführt, die unmittelbar auf das Label folgt. Das Label muss mit einem Doppelpunkt [:] beginnen und in einer eigenen Zeile stehen; es kann nicht in einer Befehlsgruppe enthalten sein . Der Doppelpunkt ist in der Zeile erforderlich, in der das Label definiert wird, aber nicht im GOTO-Befehl selbst. Unterschiede in der Groß- und Kleinschreibung werden beim Abgleich von Bezeichnungen ignoriert.
Dieses Batchdateifragment prüft, ob die Datei CONFIG.SYSvorhanden ist . Wenn die Datei existiert, springt die Batch-Datei nach C_EXISTS und kopiert alle Dateien aus dem aktuellen Verzeichnis in das Stammverzeichnis auf A:. Andernfalls gibt sie eine Fehlermeldung aus und beendet sich.
if exist config.sys goto C_EXISTS
echo CONFIG.SYS doesn't exist - quitting.
quit
:C_EXISTS
copy * a:\
GOTO beginnt die Suche nach dem Label in der Zeile der Batch-Datei unmittelbar nach dem GOTO-Befehl. Wenn das Label zwischen dieser Position und dem Ende der Datei nicht gefunden wird, beginnt GOTO die Suche wieder am Anfang der Datei. Wird das Etikett immer noch nicht gefunden, wird die Stapeldatei mit der Fehlermeldung "Etikett nicht gefunden" abgebrochen.
Um Fehler bei der Verarbeitung von verschachtelten Anweisungen und Schleifen zu vermeiden, bricht GOTO alle aktiven IFF-Anweisungen und DO / ENDDO-Schleifen ab , sofern Sie nicht /I verwenden . Das bedeutet, dass ein normales GOTO (ohne /I) nicht zu einem Label verzweigen darf, das zwischen einem IFF und dem entsprechenden ENDIFF oder zwischen einem DO und dem entsprechenden ENDDO liegt.
Aus Gründen der Kompatibilität mit CMD beendet der Befehl
GOTO :EOF
die Verarbeitung der aktuellen Stapeldatei beenden, wenn das Label :EOF nicht existiert. Dies ist jedoch weniger effizient als die Verwendung des QUIT- oder CANCEL-Befehls zum Beenden einer Batch-Datei.
Option:
Sie können nicht in eine andere IFF-Anweisung, eine andere DO-Schleife oder eine andere IFF- oder DO-Schachtelungsebene verzweigen, egal ob Sie die Option /I verwenden oder nicht. Wenn Sie dies tun, erhalten Sie bei einer nachfolgenden ENDDO-, ELSE-, ELSEIFF- oder ENDIFF-Anweisung einen Fehler "Unbekannter Befehl" (oder die Ausführung des Alias oder Plugins UNKNOWN_CMD ).