Der Befehl: "ENDLOCAL" ist auf Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. verfügbar
Die Beispiele zum Befehl "ENDLOCAL"
Der
`ENDLOCAL`-Befehl wird in der Windows-Eingabeaufforderung verwendet, um lokale Umgebungsvariablen zu beenden, die mit dem
`SETLOCAL`-Befehl eingeleitet wurden. Hier sind einige Beispiele:
Beispiel 1: Lokale Umgebung starten und beenden:
@ECHO OFF
SETLOCAL
SET Name=John
ECHO Innerhalb der lokalen Umgebung: %Name%
ENDLOCAL
ECHO Außerhalb der lokalen Umgebung: %Name%
Beschreibung: Dieses Beispiel startet eine lokale Umgebung mit
`SETLOCAL`, definiert eine lokale Variable (
`Name`), gibt den Wert innerhalb und außerhalb der lokalen Umgebung aus und beendet dann die lokale Umgebung mit
`ENDLOCAL`.
Beispiel 2: Verwendung von ENDLOCAL in einer Schleife:
@ECHO OFF
FOR /L %%A IN (1, 1, 3) DO (
SETLOCAL
SET Counter=%%A
ECHO Innerhalb der Schleife: %Counter%
ENDLOCAL
)
ECHO Außerhalb der Schleife: %Counter%
Beschreibung: Hier wird
`SETLOCAL` innerhalb einer Schleife verwendet, um eine lokale Umgebung zu erstellen.
`ENDLOCAL` beendet dann jeweils die lokale Umgebung am Ende jeder Schleifeniteration.
Beispiel 3: Lokale Umgebung mit Rückgabewert:
@ECHO OFF
CALL :LocalFunction
ECHO Außerhalb der Funktion: %ReturnValue%
GOTO :EOF
:LocalFunction
SETLOCAL
SET ReturnValue=Dies ist ein Rückgabewert
ENDLOCAL & SET ReturnValue=%ReturnValue%
GOTO :EOF
Beschreibung: Hier wird eine Funktion (
`:LocalFunction`) erstellt, die eine lokale Umgebung mit
`SETLOCAL` beginnt und mit
`ENDLOCAL` beendet wird. Der Rückgabewert wird außerhalb der Funktion verwendet.
Beispiel 4: Verwendung von ENDLOCAL in einer Batchdatei:
@ECHO OFF
CALL :Start
ECHO Außerhalb der Funktion: %GlobalVariable%
GOTO :EOF
:Start
SETLOCAL
SET GlobalVariable=Dies ist eine globale Variable
CALL :InnerFunction
ENDLOCAL & SET GlobalVariable=%GlobalVariable%
GOTO :EOF
:InnerFunction
SET LocalVariable=Dies ist eine lokale Variable
ECHO Innerhalb der Funktion: %LocalVariable%
GOTO :EOF
Beschreibung: Hier wird
`SETLOCAL` in der Hauptfunktion (
`:Start`) verwendet, um eine lokale Umgebung zu erstellen. In dieser Funktion wird eine Unterfunktion (
`:InnerFunction`) aufgerufen.
`ENDLOCAL` wird in der Hauptfunktion verwendet, um die lokale Umgebung zu beenden und dabei den Wert der globalen Variable zu aktualisieren.
Die
`ENDLOCAL`-Anweisung beendet die lokale Umgebung und setzt die Umgebungsvariablen zurück auf den Wert vor dem
`SETLOCAL`-Befehl. Wenn du eine Umgebungsvariable aus der lokalen Umgebung außerhalb davon verwenden möchtest, solltest du dies direkt nach
`ENDLOCAL` tun. Beachte, dass lokale Variablen außerhalb ihrer lokalen Umgebung nicht verfügbar sind.
"ENDLOCAL" Auszug aus der Microsoft Windows-Hilfe
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Beendet die Begrenzung des Gültigkeitsbereiches von Änderungen. Änderungen der
Umgebung nach ENDLOCAL sind nicht mehr nur auf die Batchdatei bezogen.
Die ursprünglichen Einstellungen werden nach Beenden der Batchdatei nicht
wiederhergestellt.
ENDLOCAL
Wenn die Befehlserweiterungen aktiviert sind, wird der ENDLOCAL-Befehl
folgendermaßen verändert:
Wenn der entsprechende SETLOCAL-Befehl die Befehlserweiterungen unter
Verwendung der neuen ENABLEEXTENSIONS- bzw. DISABLEEXTENSIONS-Optionen
aktiviert bzw. deaktiviert hat, dann wird nach der Ausführung von ENDLOCAL
der Zustand der Befehlserweiterungen (aktiviert/deaktiviert) wieder
hergestellt, der vor der Ausführung von SETLOCAL gültig war.
Wichtige Informationen, Tipps zum Befehl "ENDLOCAL"
Beim Verwenden des
`ENDLOCAL`-Befehls in der Windows-Eingabeaufforderung gibt es einige wichtige Punkte zu beachten:
1.
Lokale Variablen: `ENDLOCAL` beendet eine lokale Umgebung, und alle in dieser Umgebung erstellten lokalen Variablen werden verworfen. Diese Variablen sind nach
`ENDLOCAL` außerhalb der lokalisierten Umgebung nicht mehr verfügbar.
2.
Rückgabewerte: Wenn du Werte aus einer lokalen Umgebung außerhalb davon verwenden möchtest, musst du dies unmittelbar nach dem
`ENDLOCAL`-Befehl tun. Beispiel:
SETLOCAL
SET LocalVar=Hallo
ENDLOCAL & SET OutsideVar=%LocalVar%
3.
Verschachtelte `SETLOCAL`/`ENDLOCAL`: Wenn du
`SETLOCAL` mehrmals in einer Batchdatei verwendest, sollte jedes
`SETLOCAL` von einem entsprechenden
`ENDLOCAL` gefolgt werden. Jedes
`ENDLOCAL` beendet die am nächsten stehende
`SETLOCAL`-Anweisung.
4.
Vererbung von Variablen: Variablen, die in einer lokalisierten Umgebung erstellt wurden, werden nicht an übergeordnete Umgebungen vererbt. Lokale Umgebungen sind in der Regel nur für den aktuellen Batchprozess sichtbar.
5.
Ausführungsreihenfolge: `ENDLOCAL` wird in der Reihenfolge ausgeführt, in der
`SETLOCAL` aufgerufen wurde. Das bedeutet, dass die letzte lokalisierte Umgebung zuerst mit
`ENDLOCAL` beendet wird.
6.
Batchdateien und Funktionen: In Batchdateien werden lokalisierte Umgebungen häufig in Funktionen verwendet. Beim Verlassen einer Funktion wird automatisch ein
`ENDLOCAL` durchgeführt, es sei denn, die Funktion wurde mit
`GOTO :EOF` oder
`EXIT /B` verlassen. In diesem Fall ist es ratsam, manuell ein
`ENDLOCAL` hinzuzufügen.
7.
Nutzung in Schleifen: Wenn du
`SETLOCAL` in einer Schleife verwendest, wird bei jedem Schleifendurchlauf eine neue lokale Umgebung erstellt. Achte darauf, dass du
`ENDLOCAL` korrekt platzierst, um sicherzustellen, dass die lokalen Variablen nach Bedarf freigegeben werden.
FOR /L %%A IN (1, 1, 3) DO (
SETLOCAL
SET LocalVar=Hallo
ECHO %LocalVar%
ENDLOCAL
)
8.
Prozessressourcen: Die Verwendung von
`SETLOCAL` und
`ENDLOCAL` kann dazu beitragen, Prozessressourcen zu schonen, insbesondere wenn in einer Batchdatei viele Variablen definiert und verwendet werden. Durch die Begrenzung des Gültigkeitsbereichs von Variablen auf bestimmte Abschnitte des Codes können Speicherressourcen effizienter genutzt werden.
Zusammenfassend ist es wichtig,
`SETLOCAL` und
`ENDLOCAL` sorgfältig zu verwenden, um sicherzustellen, dass Variablen ordnungsgemäß behandelt und lokalisierte Umgebungen richtig verwaltet werden. Dies ist besonders relevant in komplexen Batch-Skripten oder Funktionen.