Kommandoen: "SETLOCAL" er tændt Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tilgængelig
Eksempler på kommandoen "SETLOCAL"
Det
`SETLOCAL`kommando i Windows kommandoprompt bruges til at indstille miljøvariabler lokalt i en batchfil. Her er nogle eksempler på, hvordan du bruger
`SETLOCAL`:
Eksempel 1: Indstil lokal miljøvariabel:
@ECHO OFF
SETLOCAL
SET LOKAL_VARIABLE=Indhold
ECHO %LOKAL_VARIABLE%
Beskrivelse: I dette eksempel er miljøvariablen
`LOKAL_VARIABLE`inden for det lokalt afgrænsede område (gennem
`SETLOCAL`og
`ENDLOCAL`) og kan kun bruges inden for dette område.
Eksempel 2: Nulstil til tidligere status:
@ECHO OFF
SET GLOBALE_VARIABLE=Globalt_indhold
SETLOCAL
SET LOKAL_VARIABLE=Local_Content
ECHO Lokal Variable: %LOKAL_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Lokal Variable (uden for det lokalt afgrænsede område): %LOKAL_VARIABLE%
Beskrivelse: Dette er den lokale miljøvariabel
`LOKAL_VARIABLE`indstillet og brugt inden for det lokalt begrænsede område. Efter
`ENDLOCAL`scriptet vender tilbage til den tidligere tilstand, og den lokale variabel er ikke længere tilgængelig uden for det lokale omfang.
Eksempel 3: Nesting SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=Værdi1
ECHO Indre område: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Værdi2
ECHO Eksternt område: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO Uden for lokalområdet: %VARIABLE1%, %VARIABLE2%
Beskrivelse: Det er her
`SETLOCAL`- Kommando indlejret to gange. Variablen
`VARIABLE2`er kun synlig i det indre lokaliserede område, mens
`VARIABLE1`er synlig i de ydre og indre områder.
Eksempel 4: Aktivering af avanceret behandling af miljøvariabler:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Indhold
ECHO Før forsinket Expansion: %VARIABLE%
SET VARIABLE=Nyt_indhold
ECHO Efter Forsinket Expansion: !VARIABLE!
Beskrivelse: Ved at bruge
`ENABLEDELAYEDEXPANSION`kan miljøvariable med et udråbstegn
`!`i stedet for procenttegn
`%`bruges til forsinket udvidelse.
Det
`SETLOCAL`miljøet tillader, at variabler kan indstilles lokalt for en batchfil, hvilket gør ændringer kun gældende for et begrænset område og ikke globalt for hele scriptet. Dette er især nyttigt, hvis du ønsker, at ændringer af miljøvariabler skal begrænses inden for en specifik sektion af scriptet.
"SETLOCAL" Uddrag fra Microsoft Windows Hjælp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Begynder at gøre miljøændringer lokale i en batchfil.
Miljøændringer
foretaget efter udstedelsen af SETLOCAL er lokale for batchfilen.
ENDLOCAL skal udstedes for at gendanne de tidligere
indstillinger.
Når slutningen af et batchscript er nået, udføres en implicit
ENDLOCAL
for enhver udestående SETLOCAL-kommando, der er udstedt af det
pågældende batchscript.
SETLOCAL
Hvis kommandoudvidelserne er aktiveret, ændres SETLOCAL på
følgende måde:
Batchkommandoen SETLOCAL accepterer nu valgfrie argumenter:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
aktiverer eller deaktiverer udvidelser af
kommandofortolkeren. Skriv CMD /? for at få
yderligere
oplysninger.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
aktiverer eller deaktiverer udvidelse af forsinkede
miljøvariabler. Skriv SET /? for at få yderligere
oplysninger.
Disse modifikatorer varer indtil den tilsvarende ENDLOCAL-
kommando,
uanset deres indstilling før SETLOCAL-kommandoen.
Kommandoen SETLOCAL indstiller værdien af ERRORLEVEL, hvis den
får
et argument. Den vil være nul, hvis et af de to gyldige
argumenter
er angivet, og ellers et. Du kan bruge disse batchscripts til at
bestemme, om udvidelserne er tilgængelige, vha. følgende teknik:
VERIFY OTHER 2>null
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Udvidelserne kan ikke aktiveres
Dette fungerer, fordi på ældre versioner af CMD.EXE indstiller
SETLOCAL
IKKE værdien ERRORLEVEL. Med et forkert argument initialiserer
kommandoen
VERIFY ikke værdien af ERRORLEVEL til en anden værdi end nul.
Vigtig information, tip til kommandoen "SETLOCAL"
Ja, der er nogle vigtige aspekter at overveje, når du
`SETLOCAL`kommando i Windows-kommandoprompten eller i batch-scripts:
1.
Begrænset omfang: `SETLOCAL`skaber et begrænset spillerum for miljøvariabler. Ændringer af miljøvariabler inden for dette omfang påvirker ikke det globale miljø eller andre lokaliserede omfang. Noter det
`SETLOCAL`og
`ENDLOCAL`skal bruges i par.
SETLOCAL
REM ... Her er ændringer af miljøvariabler lokale
ENDLOCAL
2.
Indlejring: Du kan
`SETLOCAL`rede for at skabe flere lokaliserede områder. Alle sammen
`SETLOCAL`men bør være med en passende
`ENDLOCAL`blive opsagt.
SETLOCAL
REM Indre lokaliseret område
SETLOCAL
REM Endnu dybere lokaliseret område
ENDLOCAL
ENDLOCAL
3.
Forsinket udvidelse: Du kan med
`SETLOCAL ENABLEDELAYEDEXPANSION`aktivere forsinket ekspansion. Variablen er inkluderet
`!`i stedet for
`%`lukket. Lazy udvidelse tillader variabler at blive evalueret på runtime, ikke kun når du læser batch-filen.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Indhold
ECHO Før forsinket Expansion: %VARIABLE%
SET VARIABLE=Nyt_indhold
ECHO Efter Forsinket Expansion: !VARIABLE!
ENDLOCAL
4.
Globale miljøvariabler: Ændringer af miljøvariabler, der er inden for en
`SETLOCAL`-scope påvirker ikke globale miljøvariabler uden for scope.
SET GLOBAL=Globalt_indhold
SETLOCAL
SET GLOBAL=Local_Content
ECHO Inden for det lokalt afgrænsede område: %GLOBAL%
ENDLOCAL
ECHO Uden for lokalområdet: %GLOBAL%
5.
Fortryd ændringer: Hvis du vil fortryde ændringer i et lokaliseret område, skal du blot vende tilbage til tilstanden før
`SETLOCAL`tilbage af dig
`ENDLOCAL`brug.
SETLOCAL
REM Ændringer her
ENDLOCAL
REM Fortryd ændringerne
Det er vigtigt,
`SETLOCAL`og
`ENDLOCAL`skal bruges omhyggeligt og i par for at sikre, at miljøvariabler er korrekt begrænset og har de forventede effekter.