Kommandoen: "SETLOCAL" er på Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tilgjengelig
Eksemplene for kommandoen "SETLOCAL"
De
`SETLOCAL`kommandoen i Windows-ledeteksten brukes til å sette miljøvariabler lokalt i en batchfil. Her er noen eksempler på hvordan du kan bruke
`SETLOCAL`:
Eksempel 1: Angi lokal miljøvariabel:
@ECHO OFF
SETLOCAL
SET LOKAL_VARIABLE=Innhold
ECHO %LOKAL_VARIABLE%
Beskrivelse: I dette eksemplet er miljøvariabelen
`LOKAL_VARIABLE`innenfor det lokalt begrensede området (gjennom
`SETLOCAL`og
`ENDLOCAL`) og kan bare brukes innenfor dette området.
Eksempel 2: Tilbakestill til forrige status:
@ECHO OFF
SET GLOBALE_VARIABLE=Global_Content
SETLOCAL
SET LOKAL_VARIABLE=Lokalt innhold
ECHO Lokalt Variable: %LOKAL_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Lokalt Variable (utenfor det lokalt begrensede området): %LOKAL_VARIABLE%
Beskrivelse: Dette er den lokale miljøvariabelen
`LOKAL_VARIABLE`satt og brukt innenfor det lokalt begrensede området. Etter
`ENDLOCAL`skriptet går tilbake til forrige tilstand og den lokale variabelen er ikke lenger tilgjengelig utenfor det lokale omfanget.
Eksempel 3: Nesting SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=Verdi1
ECHO Indre område: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Verdi2
ECHO Eksternt område: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO Utenfor nærområdet: %VARIABLE1%, %VARIABLE2%
Beskrivelse: Det er her
`SETLOCAL`- Kommando nestet to ganger. Variabelen
`VARIABLE2`er kun synlig i det indre lokaliserte området, mens
`VARIABLE1`er synlig i ytre og indre områder.
Eksempel 4: Aktivering av avansert behandling av miljøvariabler:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Innhold
ECHO Før forsinket Expansion: %VARIABLE%
SET VARIABLE=Nytt_innhold
ECHO Etter forsinket Expansion: !VARIABLE!
Beskrivelse: Ved å bruke
`ENABLEDELAYEDEXPANSION`kan miljøvariabler med et utropstegn
`!`i stedet for prosenttegn
`%`brukes til forsinket utvidelse.
De
`SETLOCAL`miljøet lar variabler settes lokalt for en batchfil, noe som gjør at endringer kun gjelder for et begrenset område og ikke globalt for hele skriptet. Dette er spesielt nyttig hvis du vil at endringer i miljøvariabler skal begrenses innenfor en bestemt del av skriptet.
"SETLOCAL" Utdrag fra Microsoft Windows Hjelp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Starter lokal definisjon av miljøendringer i en satsvis fil.
Miljøendringer
som gjøres etter SETLOCAL, gjelder bare den satsvise filen.
ENDLOCAL må brukes
til å gjenopprette tidligere innstillinger. Når slutten på en
satsvis fil nås,
kjøres en implisitt ENDLOCAL for eventuelt utestående SETLOCAL-
kommandoer som
er kjørt av den satsvise filen.
SETLOCAL
Hvis kommandoutvidelser er aktivert, får SETLOCAL følgende
endringer:
Kommandoen SETLOCAL for satsvise filer, godtar nå valgfrie
argumenter:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
aktiver eller deaktiver utvidelser for
kommandoprosessoren.
Se CMD /? for detaljer.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
aktiver eller deaktiver forsinket utvidelse av
miljøvariabler.
Se SET /? for detaljer.
Disse endringene varer inntil en motsvarende ENDLOCAL-kommando,
uansett
innstillinger før SETLOCAL-kommandoen.
SETLOCAL-kommandoen vil sette ERRORLEVEL-verdien hvis den får
argumenter.
Den vil være 0 hvis en av de to gyldige argumentene er gitt,
ellers 1.
Du kan bruke dette i satsvise skript til å finne ut om filtypene
er
tilgjengelige, ved hjelp av følgende teknikk:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Kan ikke aktivere utvidelser
Dette virker fordi SETLOCAL IKKE satte ERRORLEVEL-verdien på
gamle versjoner
av Cmd.exe. Kommandoen VERIFY med et ugyldig argument
initialiserer verdien
til ERRORLEVEL til en verdi som ikke er null.
Viktig informasjon, tips for "SETLOCAL"-kommandoen
Ja, det er noen viktige aspekter å vurdere når du
`SETLOCAL`kommando i Windows-ledeteksten eller i batch-skript:
1.
Begrenset omfang: `SETLOCAL`skaper et begrenset omfang for miljøvariabler. Endringer i miljøvariabler innenfor dette omfanget påvirker ikke det globale miljøet eller andre lokaliserte omfang. Noter det
`SETLOCAL`og
`ENDLOCAL`skal brukes i par.
SETLOCAL
REM ... Her er endringer i miljøvariabler lokale
ENDLOCAL
2.
Nesting: Du kan
`SETLOCAL`reir for å lage flere lokaliserte områder. Alle sammen
`SETLOCAL`men bør være med en passende en
`ENDLOCAL`bli avsluttet.
SETLOCAL
REM Indre lokalisert område
SETLOCAL
REM Enda dypere lokalisert område
ENDLOCAL
ENDLOCAL
3.
Forsinket utvidelse: Du kan med
`SETLOCAL ENABLEDELAYEDEXPANSION`aktivere forsinket utvidelse. Variabelen er inkludert
`!`i stedet for
`%`vedlagt. Lazy utvidelse gjør at variabler kan evalueres under kjøring, ikke bare når du leser batchfilen.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Innhold
ECHO Før forsinket Expansion: %VARIABLE%
SET VARIABLE=Nytt_innhold
ECHO Etter forsinket Expansion: !VARIABLE!
ENDLOCAL
4.
Globale miljøvariabler: Endringer i miljøvariabler som er innenfor en
`SETLOCAL`-omfang påvirker ikke globale miljøvariabler utenfor omfanget.
SET GLOBAL=Global_Content
SETLOCAL
SET GLOBAL=Lokalt innhold
ECHO Innenfor det lokalt begrensede området: %GLOBAL%
ENDLOCAL
ECHO Utenfor nærområdet: %GLOBAL%
5.
Angre endringer: Hvis du vil angre endringer i et lokalisert område, går du ganske enkelt tilbake til tilstanden før
`SETLOCAL`tilbake av deg
`ENDLOCAL`bruk.
SETLOCAL
REM Endringer her
ENDLOCAL
REM Angre endringene
Det er viktig,
`SETLOCAL`og
`ENDLOCAL`skal brukes forsiktig og i par for å sikre at miljøvariabler er riktig begrenset og har de forventede effektene.