Zweck:Verzweigung zu einer bestimmten Zeile innerhalb der aktuellen Batch-Datei

 

Format:GOTO [/I] label

 

labelDas Label der Batchdatei, zu der verzweigt werden soll.

 

/I(FF und DO weiter)

 

Siehe auch: GOSUB, CALL.

 

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:

 

/IVerhindert, dass GOTO die IFF-Anweisungen und DO-Schleifen abbricht. Verwenden Sie diese Option nur, wenn Sie absolut sicher sind, dass Ihr GOTO-Befehl vollständig innerhalb einer aktuellen IFF-Anweisung und eines aktiven DO-/ENDDO-Blocks verzweigt . Die Verwendung von /I unter anderen Bedingungen führt zu einem Fehler in Ihrer Batch-Datei.

 

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 ).