Polecenie: "SETLOCAL" jest włączone Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. dostępne
Przykłady polecenia "SETLOCAL"
The
`SETLOCAL`polecenie w wierszu poleceń systemu Windows służy do lokalnego ustawiania zmiennych środowiskowych w pliku wsadowym. Oto kilka przykładów użycia
`SETLOCAL`:
Przykład 1: Ustaw lokalną zmienną środowiskową:
@ECHO OFF
SETLOCAL
SET LOKALNY_VARIABLE=Zawartość
ECHO %LOKALNY_VARIABLE%
Opis: W tym przykładzie zmienna środowiskowa
`LOKALNY_VARIABLE`na obszarze ograniczonym lokalnie (do
`SETLOCAL`I
`ENDLOCAL`) i można ich używać wyłącznie w tym zakresie.
Przykład 2: Reset do poprzedniego stanu:
@ECHO OFF
SET GLOBALE_VARIABLE=Treść globalna
SETLOCAL
SET LOKALNY_VARIABLE=Lokalna zawartość
ECHO Lokalny Variable: %LOKALNY_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Lokalny Variable (poza lokalnie ograniczonym obszarem): %LOKALNY_VARIABLE%
Opis: To jest lokalna zmienna środowiskowa
`LOKALNY_VARIABLE`ustawione i używane na lokalnie ograniczonym obszarze. Po
`ENDLOCAL`skrypt powraca do poprzedniego stanu, a zmienna lokalna nie jest już dostępna poza zasięgiem lokalnym.
Przykład 3: Zagnieżdżanie SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=Wartość1
ECHO Obszar wewnętrzny: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Wartość2
ECHO Obszar zewnętrzny: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO Poza lokalnym obszarem: %VARIABLE1%, %VARIABLE2%
Opis: To tutaj
`SETLOCAL`-Polecenie zagnieżdżone dwukrotnie. Zmienna
`VARIABLE2`jest widoczny tylko w wewnętrznym obszarze zlokalizowanym, podczas gdy
`VARIABLE1`jest widoczny w obszarach zewnętrznych i wewnętrznych.
Przykład 4: Włączenie zaawansowanego przetwarzania zmiennych środowiskowych:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Zawartość
ECHO Przed opóźnieniem Expansion: %VARIABLE%
SET VARIABLE=Nowa treść
ECHO Po Opóźnieniu Expansion: !VARIABLE!
Opis: Używając
`ENABLEDELAYEDEXPANSION`can zmienne środowiskowe z wykrzyknikiem
`!`zamiast znaków procentu
`%`być stosowany do opóźnionego rozszerzania.
The
`SETLOCAL`środowisko umożliwia lokalne ustawienie zmiennych dla pliku wsadowego, dzięki czemu zmiany dotyczą tylko ograniczonego obszaru, a nie globalnie całego skryptu. Jest to szczególnie przydatne, jeśli chcesz, aby zmiany zmiennych środowiskowych były ograniczone do określonej sekcji skryptu.
"SETLOCAL" Fragment Pomocy systemu Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Sprawia, ze zmiany srodowiska w pliku wsadowym beda lokalne.
Zmiany srodowiska dokonane po wydaniu polecenia SETLOCAL sa
lokalne:
dotycza pliku wsadowego. Aby przywrócic poprzednie ustawienia,
nalezy wydac
polecenie ENDLOCAL.
SETLOCAL
Przy wlaczonych rozszerzeniach, polecenie SETLOCAL zmienia sie
nastepujaco:
Polecenie skryptów SETLOCAL akceptuje obecnie dodatkowe
argumenty:
ENABLEEXTENSIONS albo DISABLEEXTENSIONS, umozliwiajace
wlaczenie
lub wylaczenie rozszerzen interpretera polecen. Wiecej
szczególów mozna
znalezc wpisujac polecenie: CMD /?.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION,
umozliwiajace wlaczenie
lub wylaczenie opóznionego rozwijania zmiennych
srodowiskowych. Wiecej
szczególów mozna znalezc wpisujac polecenie: SET /?.
Te modyfikacje obowiazuja do momentu napotkania polecenia
ENDLOCAL,
niezaleznie od ich ustawien przed poleceniem SETLOCAL.
Polecenie SETLOCAL ustawia wartosc zmiennej ERRORLEVEL, jezeli
podany zostanie
razem z nim argument. Zmienna otrzyma wartosc 0, jezeli podany
zostal jeden
z dwóch prawidlowych argumentów, lub 1 w pozostalych przypadkach.
Mozna to
wykorzystac w skryptach wsadowych, aby okreslic, czy dostepne sa
rozszerzenia,
uzywajac nastepujacej techniki:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Wlaczenie rozszerzen bylo niemozliwe
To dziala, poniewaz w starych wersjach CMD.EXE polecenie SETLOCAL
nie
ustawia wartosci ERRORLEVEL. Polecenie VERIFY ze zlym argumentem
inicjalizuje wartosc ERRORLEVEL do wartosci niezerowej.
Ważna informacja, wskazówki dotyczące polecenia "SETLOCAL"
Tak, jest kilka ważnych aspektów, które należy wziąć pod uwagę, kiedy to robisz
`SETLOCAL`polecenie w wierszu poleceń systemu Windows lub w skryptach wsadowych:
1.
Ograniczony zakres: `SETLOCAL`tworzy ograniczony zakres zmiennych środowiskowych. Zmiany zmiennych środowiskowych w tym zakresie nie mają wpływu na środowisko globalne ani inne zlokalizowane zakresy. Zauważ to
`SETLOCAL`I
`ENDLOCAL`należy stosować w parach.
SETLOCAL
REM ... Tutaj zmiany zmiennych środowiskowych są lokalne
ENDLOCAL
2.
Zagnieżdżanie: Możesz
`SETLOCAL`zagnieżdżaj, aby utworzyć wiele zlokalizowanych obszarów. Wszyscy
`SETLOCAL`ale powinien być z odpowiednim
`ENDLOCAL`zostać rozwiązany.
SETLOCAL
REM Wewnętrzny zlokalizowany obszar
SETLOCAL
REM Jeszcze głębiej zlokalizowany obszar
ENDLOCAL
ENDLOCAL
3.
Opóźniona ekspansja: Możesz z
`SETLOCAL ENABLEDELAYEDEXPANSION`aktywuj opóźnione rozszerzanie. Zmienna jest uwzględniona
`!`zamiast
`%`w załączeniu. Leniwe rozwijanie pozwala na ocenę zmiennych w czasie wykonywania, a nie tylko podczas odczytu pliku wsadowego.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Zawartość
ECHO Przed opóźnieniem Expansion: %VARIABLE%
SET VARIABLE=Nowa treść
ECHO Po Opóźnieniu Expansion: !VARIABLE!
ENDLOCAL
4.
Globalne zmienne środowiskowe: Zmiany w zmiennych środowiskowych znajdujących się w a
`SETLOCAL`-scope nie wpływa na globalne zmienne środowiskowe poza zakresem.
SET GLOBAL=Treść globalna
SETLOCAL
SET GLOBAL=Lokalna zawartość
ECHO Na ograniczonym lokalnie obszarze: %GLOBAL%
ENDLOCAL
ECHO Poza lokalnym obszarem: %GLOBAL%
5.
Cofanie zmian: Jeśli chcesz cofnąć zmiany w zlokalizowanym obszarze, po prostu wróć do stanu sprzed
`SETLOCAL`z powrotem przez ciebie
`ENDLOCAL`używać.
SETLOCAL
REM Zmiany tutaj
ENDLOCAL
REM Cofnij zmiany
To jest ważne,
`SETLOCAL`I
`ENDLOCAL`należy stosować ostrożnie i parami, aby zapewnić, że zmienne środowiskowe są odpowiednio ograniczone i przynoszą oczekiwane skutki.