Kommandot: "SETLOCAL" är på Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tillgänglig
Exemplen för kommandot "SETLOCAL"
De
`SETLOCAL`kommandot i Windows kommandotolk används för att ställa in miljövariabler lokalt i en batchfil. Här är några exempel på hur man använder
`SETLOCAL`:
Exempel 1: Ange lokal miljövariabel:
@ECHO OFF
SETLOCAL
SET LOKAL_VARIABLE=Innehåll
ECHO %LOKAL_VARIABLE%
Beskrivning: I det här exemplet, miljövariabeln
`LOKAL_VARIABLE`inom det lokalt begränsade området (genom
`SETLOCAL`och
`ENDLOCAL`) och kan endast användas inom detta intervall.
Exempel 2: Återställ till tidigare status:
@ECHO OFF
SET GLOBALE_VARIABLE=Global_Content
SETLOCAL
SET LOKAL_VARIABLE=Local_Content
ECHO Lokal Variable: %LOKAL_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Lokal Variable (utanför det lokalt begränsade området): %LOKAL_VARIABLE%
Beskrivning: Detta är den lokala miljövariabeln
`LOKAL_VARIABLE`ställas in och används inom det lokalt begränsade området. Efter
`ENDLOCAL`skriptet återgår till det tidigare tillståndet och den lokala variabeln är inte längre tillgänglig utanför det lokala omfånget.
Exempel 3: Häckande SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=Värde1
ECHO Inre område: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Värde2
ECHO Externt område: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO Utanför närområdet: %VARIABLE1%, %VARIABLE2%
Beskrivning: Det är här
`SETLOCAL`-Kommandot kapslade två gånger. Variabeln
`VARIABLE2`är endast synlig i det inre lokaliserade området, medan
`VARIABLE1`är synlig i de yttre och inre områdena.
Exempel 4: Aktivera avancerad bearbetning av miljövariabler:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Innehåll
ECHO Innan försenad Expansion: %VARIABLE%
SET VARIABLE=Nytt innehåll
ECHO Efter Försenad Expansion: !VARIABLE!
Beskrivning: Genom att använda
`ENABLEDELAYEDEXPANSION`kan miljövariabler med ett utropstecken
`!`istället för procenttecken
`%`användas för fördröjd expansion.
De
`SETLOCAL`miljön tillåter att variabler ställs in lokalt för en batchfil, vilket gör att ändringar endast gäller för ett begränsat område och inte globalt för hela skriptet. Detta är särskilt användbart om du vill att ändringar av miljövariabler ska begränsas inom en specifik del av skriptet.
"SETLOCAL" Utdrag från Microsoft Windows Hjälp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Påbörjar lokala inställningar av miljövariabler i en kommandofil.
Inställningar som gjorts efter kommandot SETLOCAL utfördes gäller
endast lokalt i kommandofilen. Kommandot ENDLOCAL måste utföras
för
att återställa de tidigare inställningarna. När slutet på en
kommandofil
nåtts, körs kommandot ENDLOCAL för alla aktiva SETLOCAL-kommandon
som
anropats av kommandofilen.
SETLOCAL
Om kommandotilläggen är aktiverade ändras kommandot SETLOCAL
enligt följande:
Kommandot SETLOCAL accepterar nu följande valfria argument:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
aktivera eller inaktivera kommandotolkstillägg. Skriv
CMD /? för mer information.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
aktivera eller inaktivera fördröjd expandering
av miljövariabler. Skriv SET /? för mer information.
De här ändringarna gäller tills det matchande kommandot ENDLOCAL
anges,
oavsett av vilka inställningar som gällde innan kommandot
SETLOCAL angavs.
Kommandot SETLOCAL anger värdet för variabeln ERRORLEVEL om ett
argument
anges. Värdet kommer att vara noll om ett av de två argumenten
anges.
I alla andra fall blir värdet ett. Detta kommando kan användas i
kommandofiler för att ta reda på om tilläggen är tillgängliga.
Till exempel:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Det gick inte att aktivera tilläggen
Detta fungerar eftersom i gamla versioner av CMD.EXE anger
SETLOCAL
inte värdet för variabeln ERRORLEVEL. Kommandot VERIFY med ett
ogiltigt
argument tilldelar variabeln ERRORLEVEL ett värde skiljt från
noll.
Viktig information, tips för kommandot "SETLOCAL"
Ja, det finns några viktiga aspekter att tänka på när du
`SETLOCAL`kommando i Windows-kommandotolken eller i batchskript:
1.
Begränsat omfattning: `SETLOCAL`skapar ett begränsat utrymme för miljövariabler. Ändringar av miljövariabler inom detta omfång påverkar inte den globala miljön eller andra lokaliserade omfång. Anteckna det
`SETLOCAL`och
`ENDLOCAL`bör användas i par.
SETLOCAL
REM ... Här är förändringar av miljövariabler lokala
ENDLOCAL
2.
Inkapsling: Du kan
`SETLOCAL`bo för att skapa flera lokaliserade områden. Alla
`SETLOCAL`men bör vara med en lämplig
`ENDLOCAL`avslutas.
SETLOCAL
REM Inre lokaliserat område
SETLOCAL
REM Ännu djupare lokaliserat område
ENDLOCAL
ENDLOCAL
3.
Försenad expansion: Du kan med
`SETLOCAL ENABLEDELAYEDEXPANSION`aktivera fördröjd expansion. Variabeln ingår
`!`istället för
`%`medföljande. Lazy expansion gör att variabler kan utvärderas under körning, inte bara när man läser batchfilen.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Innehåll
ECHO Innan försenad Expansion: %VARIABLE%
SET VARIABLE=Nytt innehåll
ECHO Efter Försenad Expansion: !VARIABLE!
ENDLOCAL
4.
Globala miljövariabler: Ändringar av miljövariabler som finns inom en
`SETLOCAL`-scope påverkar inte globala miljövariabler utanför räckvidden.
SET GLOBAL=Global_Content
SETLOCAL
SET GLOBAL=Local_Content
ECHO Inom det lokalt begränsade området: %GLOBAL%
ENDLOCAL
ECHO Utanför närområdet: %GLOBAL%
5.
Ångra ändringar: Om du vill ångra ändringar i ett lokaliserat område, återgå helt enkelt till läget innan
`SETLOCAL`tillbaka av dig
`ENDLOCAL`använda sig av.
SETLOCAL
REM Ändringar här
ENDLOCAL
REM Ångra ändringarna
Det är viktigt,
`SETLOCAL`och
`ENDLOCAL`ska användas försiktigt och i par för att säkerställa att miljövariabler är korrekt begränsade och har de förväntade effekterna.