| Zweck: | Wiederherstellung des gespeicherten Laufwerks, des Verzeichnisses, der Umgebung, der lokalen Alias- und Funktionslisten sowie der Sonderzeichen und Export ausgewählter Variablen |
| Format: | ENDLOCAL [/D] [exportvar...] |
Siehe auch: SETLOCAL.
Verwendung:
Der Befehl SETLOCAL speichert das aktuelle Laufwerk, das Standardverzeichnis, alle Umgebungsvariablen, die Alias- und Funktionslisten, den Verzeichnisstapel (PUSHD) sowie das Befehlstrennzeichen, Escape-Zeichen, Parameterzeichen, Dezimaltrennzeichen und Tausendertrennzeichen. Die benutzerdefinierte Funktionsliste und die Array-Variablen werden nicht gespeichert. ENDLOCAL stellt alles wieder her, was mit dem vorherigen SETLOCAL-Befehl gespeichert wurde , außer wie unten beschrieben.
Wenn Sie nur globale Aliase und/oder Funktionen haben, kopiert SETLOCAL diese für die Dauer von SETLOCAL in eine lokale Liste. Der passende ENDLOCAL-Befehl setzt sie auf die globale Liste zurück. Wenn Sie sowohl lokale als auch globale Aliase oder Funktionen haben, wird ENDLOCAL nur die lokale Liste wiederherstellen (die von SETLOCAL gespeichert wurde).
Dieses Stapeldateifragment speichert beispielsweise alles, entfernt alle Aliase, so dass Benutzer-Aliase die Stapeldatei-Befehle nicht beeinflussen, ändert das Laufwerk und das Verzeichnis, ändert das Befehlstrennzeichen, führt ein Programm aus und stellt dann die ursprünglichen Werte wieder her:
setlocal
unalias *
cdd d:\test
setdos /c~
program ~ echo Done!
endlocal
SETLOCAL / ENDLOCAL kann innerhalb einer einzigen Batchdatei bis zu 32 Ebenen tief verschachtelt werden. Sie können auch mehrere separate SETLOCAL / ENDLOCAL-Paare innerhalb einer Batch-Datei haben , und verschachtelte Batch-Dateien können jeweils ihr eigenes SETLOCAL / ENDLOCAL haben . Wenn Sie in der Stapeldatei kein ENDLOCAL angeben, TCC dies automatisch, wenn die Batch-Datei beendet wird.
Sie können SETLOCAL und ENDLOCAL auch in einem Alias, einer Bibliotheksfunktion oder in der Befehlszeile verwenden . Die maximale Verschachtelungsebene in einer Befehlszeile oder einem Alias beträgt 32 Ebenen. Im Gegensatz zu Batchdateien sind Sie für den Abgleich der SETLOCAL / ENDLOCAL-Aufrufe in einem Alias oder einer Befehlszeile verantwortlich ; TCC führt nicht automatisch ein ENDLOCAL durch.
Ein ENDLOCAL wird automatisch am Ende einer Batch-Datei oder bei der Rückkehr von einem "GOSUB Dateiname" durchgeführt. Wenn Sie eine Stapeldatei von einer anderen aus aufrufen, ohne CALL zu verwenden , wird die erste Stapeldatei beendet und ein automatisches ENDLOCAL durchgeführt; die zweite Stapeldatei erbt die Einstellungen, wie sie vor einem SETLOCAL waren .
•Exportieren von Umgebungsvariablen
Die Umgebungsvariablen, deren Namen im Befehl ENDLOCAL angegeben sind, werden exportiert. Das bedeutet, dass ihre Namen und Werte aus SETLOCAL / ENDLOCAL in die wiederhergestellte Umgebung übernommen werden, wobei die Variablen entweder hinzugefügt oder möglicherweise geändert werden. Im folgenden Beispiel wird die Variable TEST nach der Ausführung von ENDLOCAL den Wert abcd haben, unabhängig davon, welchen Wert sie hatte oder ob sie vorher nicht definiert war:
setlocal
set test=abcd
endlocal test
Die Liste der zu exportierenden Variablen kann Wildcards enthalten. Alle Variablen, die dem angeforderten Muster entsprechen, werden exportiert.
•Exportieren des aktuellen Arbeitsverzeichnisses
Siehe Option /D unten.
Optionen:
| /D | (Verzeichnis nicht wiederherstellen) Exportiert das aktuelle Verzeichnis: das ursprüngliche Laufwerk und das Verzeichnis, das von SETLOCAL gespeichert wurde, werdennicht wiederhergestellt. |