Polecenie: "SET" jest włączone Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. dostępne
Przykłady polecenia "SET"
The
`SET`polecenie w wierszu poleceń systemu Windows służy do tworzenia, przeglądania i modyfikowania zmiennych środowiskowych. Oto kilka przykładów użycia
`SET`-Komenda:
Przykład 1: Utwórz nową zmienną środowiskową:
SET NOWY_VARIABLE=Zawartość
Opis: To polecenie tworzy nową zmienną środowiskową o nazwie
`NOWY_VARIABLE`i wartość
`Zawartość`.
Przykład 2: Wyświetl istniejącą zmienną środowiskową:
SET ISTNIEJĄCY_VARIABLE
Opis: To polecenie pokazuje wartość zmiennej środowiskowej
`ISTNIEJĄCY_VARIABLE`Na.
Przykład 3: Pokaż wszystkie zmienne środowiskowe:
SET
Opis: Wchodząc
`SET`bez określonej zmiennej wyświetlane są wszystkie zmienne środowiskowe i ich wartości.
Przykład 4: Usuń zmienną:
SET NOWY_VARIABLE=
Opis: To jest wartość zmiennej środowiskowej
`NOWY_VARIABLE`usunięte.
Przykład 5: Użycie zmiennej w pliku wsadowym:
ECHO %NOWY_VARIABLE%
Opis: To polecenie zwraca wartość zmiennej środowiskowej
`NOWY_VARIABLE`poza. W plikach wsadowych składnia
`%Variable%`używany do uzyskania dostępu do wartości zmiennej środowiskowej.
Przykład 6: Zapisz dane wprowadzone przez użytkownika w zmiennej:
SET /P WPIS UŻYTKOWNIKA=Wpisz coś:
Opis: To polecenie monituje użytkownika o wprowadzenie czegoś i zapisuje dane wejściowe w zmiennej środowiskowej
`WPIS UŻYTKOWNIKA`.
Istnieje wiele zaawansowanych opcji i funkcji
`SET`polecenie, w tym modyfikacje ciągów, używanie zmiennych środowiskowych w skryptach wsadowych i nie tylko. O wejściu
`SET /?`w wierszu poleceń otrzymasz listę dostępnych opcji i bardziej szczegółowe informacje.
"SET" Fragment Pomocy systemu Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Wyswietla, ustawia i usuwa zmienne srodowiskowe programu cmd.exe.
SET [zmienna=[ciag]]
zmienna Okresla nazwe zmiennej srodowiskowej.
ciag Okresla ciag znaków, który ma byc przypisany zmiennej.
Wpisz SET bez parametrów, aby wyswietlic biezace zmienne
srodowiskowe.
Przy wlaczonych rozszerzeniach polecen polecenie SET zmienia sie
nastepujaco:
Polecenie SET wywolane tylko z nazwa zmiennej, bez znaku równosci
lub wartosci
wyswietli wartosc wszystkich zmiennych, których prefiks
odpowiada.
nazwie podanej poleceniu SET. Na przyklad:
SET P
wyswietli wszystkie zmienne, których nazwy zaczynaja sie od
litery 'P'
Polecenie SET nada zmiennej ERRORLEVEL wartosc 1, jesli nazwy tej
zmiennej
nie mozna znalezc w biezacym srodowisku.
Polecenie SET nie zezwala, aby znak równosci (=) byl czescia
nazwy zmiennej.
Do polecenia SET dodano dwa nowe przelaczniki:
SET /A wyrazenie
SET /P zmienna=[ciag_monitu]
Przelacznik /A mówi, ze ciag po prawej stronie znaku równosci
jest
wyrazeniem numerycznym, które jest obliczane. Program obslugujacy
obliczanie wyrazen jest bardzo prosty i obsluguje nastepujace
operacje
(wymienione wedlug malejacego pierwszenstwa):
() - grupowanie
! ~ - - operatory jednoargumentowe
* / % - operatory arytmetyczne
+ - - operatory arytmetyczne
<< >> - przesuniecie logiczne
& - logiczne "i"
^ - logiczne wylaczne "lub"
| - logiczne "lub"
= *= /= %= += -= - przypisanie
&= ^= |= <<= >>=
, - separator wyrazen
Jesli uzywasz operatorów logicznych lub modulo, ujmij ciag
wyrazenia
w cudzyslów. Wszelkie nie numeryczne ciagi w wyrazeniu sa
traktowane jako
zmienne srodowiskowe, których wartosci, przed ich uzyciem, musza
byc
konwertowane na liczby. Jesli nazwa zmiennej srodowiskowej jest
podana, ale
nie jest okreslona w biezacym srodowisku, to uzywana jest wartosc
zero.
Pozwala to na dzialania arytmetyczne z uzyciem zmiennych
srodowiskowych bez
potrzeby wpisywania znaków %, by uzyskac ich wartosci. Jesli
polecenie
SET /A jest wykonywane z wiersza polecenia poza skryptem polecen,
to wyswietla
ostateczna wartosc wyrazenia. Operator przypisania wymaga nazwy
zmiennej
srodowiska po swojej lewej stronie. Wartosci liczbowe sa liczbami
dziesietnymi, o ile nie sa poprzedzone znakami 0x (wówczas sa to
liczby
w postaci szesnastkowej), 0b (liczby dwójkowe) lub 0 (liczby
ósemkowe).
Zatem 0x12 jest tym samym co 0b10010 i tym samym co 022. Zwróc
uwage,
ze zapis ósemkowy moze byc mylacy: 08 i 09 nie sa poprawnymi
liczbami,
poniewaz 8 i 9 nie sa prawidlowymi cyframi ósemkowymi.
Przelacznik /P zezwala na ustawienie wartosci zmiennej dla
wiersza wejscia
wprowadzonego przez uzytkownika. Wyswietla okreslony ciag_monitu
przed
odczytaniem wiersza wejscia. Ciag_monitu moze byc pusty.
Podstawianie zmiennej srodowiskowej zostalo ulepszone:
%PATH:str1=str2%
rozwija zmienna srodowiskowa PATH, podstawiajac kazde wystapienie
"str1"
w rozwinietym wyniku z "str2". "str2" moze byc ciagiem pustym w
celu
efektywnego usuwania wszystkich wystapien ciagu "str1" z
rozwinietego wyjscia.
"str1" moze zaczynac sie od gwiazdki, w przypadku gdy dopasowuje
wszystko od
poczatku rozwinietego wyjscia do pierwszego wystapienia
pozostalej czesci str1.
Mozna równiez okreslic podciagi dla rozwiniecia.
%PATH:~10,5%
rozwinie zmienna srodowiskowa PATH, a nastepnie uzyje tylko 5
znaków
zaczynajacych sie od 11-tego (przesuniecie 10) znaku rozwinietego
wyniku.
Jesli dlugosc nie jest okreslona, wtedy jest domyslnie reszta
wartosci
zmiennej. Jesli takze liczba (przesuniecie lub dlugosc) jest
ujemna, wtedy
uzywana liczba jest dlugosc wartosci zmiennej srodowiskowej
dodanej
do przesuniecia lub okreslonej dlugosci.
%PATH:~-10%
wyodrebni ostatnie 10 znaków zmiennej PATH.
%PATH:~0,-2%
wyodrebni wszystkie oprócz ostatnich 2 znaków zmiennej PATH.
Ostatecznie, dodano obsluge opóznionego rozwijania zmiennych
srodowiskowych.
Obsluga ta jest zawsze wlaczona domyslnie, ale moze byc
wlaczana/wylaczana za
pomoca przelacznika wiersza polecenia /V dla programu CMD.EXE.
Zobacz CMD /?
Opóznione rozwijanie zmiennych srodowiskowych jest uzyteczne do
omijania
ograniczen biezacego rozwiniecia, które maja miejsce gdy wiersz
jest czytany,
a nie kiedy jest wykonywany. Nastepujacy przyklad przedstawia
problem
z rozwinieciem zmiennej natychmiastowej:
set VAR=przed
if "%VAR%" == "przed" (
set VAR=po
if "%VAR%" == "po" @echo Jesli to widzisz, to zadzialalo
)
nigdy nie wyswietli komunikatu, poniewaz %VAR% w instrukcjach
BOTH IF jest
podstawiana, kiedy czytana jest pierwsza instrukcja IF, poniewaz
logicznie
zawiera glówne polecenie IF, które jest instrukcja zlozona.
Dlatego IF
wewnatrz instrukcji zlozonej faktycznie porównuje "przed" z "po",
które nigdy
nie beda sobie równe. Podobnie, nie zadziala nastepujacy
przyklad:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
w którym nie zostanie zbudowana lista plików w katalogu biezacym,
ale zamiast
tego zostanie ustawiona zmienna LIST na ostatni znaleziony plik.
Dzieje sie
tak, poniewaz zmienna %LIST% jest rozwijana tylko raz, kiedy
czytana jest
instrukcja FOR, a w tym czasie zmienna LIST jest pusta.
Faktycznie wykonywana petla FOR jest:
for %i in (*) do set LIST= %i
która ustawia LIST na ostatni znaleziony plik.
Opóznione rozwijanie zmiennych srodowiskowych zezwala na uzywanie
innego
znaku (wykrzyknik) do rozwijania zmiennych srodowiskowych w
czasie
wykonywania. Jesli opóznione rozwijanie zmiennych jest wlaczone,
powyzsze
przyklady mozna zapisac jak ponizej, aby zadzialaly zgodnie z
oczekiwaniami:
set VAR=przed
if "%VAR%" == "przed" (
set VAR=po
if "!VAR!" == "po" @echo Jesli to widzisz, to zadzialalo
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Przy wlaczonych rozszerzeniach polecen, istnieje kilka
dynamicznych zmiennych
srodowiskowych, które mozna rozwijac, ale które nie pojawiaja sie
na liscie
zmiennych wyswietlanych przy uzyciu polecenia SET. Te wartosci
zmiennych sa
obliczane dynamicznie za kazdym razem, gdy wartosc zmiennej jest
rozwijana.
Jesli uzytkownik jawnie definiuje zmienna z jedna z tych nazw,
wtedy definicja
ta zastepuje nazwe dynamiczna opisana ponizej:
%CD% - rozwija do ciagu katalogu biezacego.
%DATE% - rozwija do biezacej daty uzywajac tego samego formatu co
polecenie
DATE.
%TIME% - rozwija do biezacego czasu uzywajac tego samego formatu
co
polecenie TIME.
%RANDOM% - rozwija do losowej liczby dziesietnej miedzy 0 a
32767.
%ERRORLEVEL% - rozwija do biezacej wartosci ERRORLEVEL.
%CMDEXTVERSION% - rozwija do biezacej liczby wersji rozszerzen
procesora
polecen.
%CMDCMDLINE% - rozwija do oryginalnego wiersza polecenia, który
wywolal
procesora polecen.
Ważna informacja, wskazówki dotyczące polecenia "SET"
Podczas korzystania z
`SET`w wierszu poleceń systemu Windows, należy zwrócić uwagę na kilka ważnych aspektów:
1.
Zastępowanie zmiennych środowiskowych: Jeśli masz zmienną środowiskową
`SET`Jeśli utworzysz zmienną środowiskową o tej samej nazwie, co istniejąca zmienna środowiskowa, istniejąca zmienna zostanie nadpisana. Upewnij się, że masz zamiar to zrobić, aby uniknąć niepożądanych efektów.
SET ISTNIEJĄCY_VARIABLE=Nowa wartość
2.
Odstępy w wartościach: W przypadku ustawiania wartości ze spacjami w zmiennych środowiskowych zaleca się ująć wartość w cudzysłów. Pomaga to uniknąć problemów z interpretacją przestrzeni.
SET VARIABLE_Z_PRZESTRZEŃ="Wartość ze spacjami"
3.
Wyświetl wszystkie zmienne środowiskowe: Po prostu wprowadź
`SET`bez określonej zmiennej wyświetla wszystkie zmienne środowiskowe i ich wartości. Może to być pomocne w upewnieniu się, że zmiany zostały wprowadzone zgodnie z oczekiwaniami.
SET
4.
Ustawianie zmiennych środowiskowych w skryptach wsadowych: Jeśli ustawisz zmienne środowiskowe w skrypcie wsadowym, pamiętaj, że dostęp do zmiennej będzie można uzyskać później w skrypcie
`%Variable%`on podąża.
SET NOWY_VARIABLE=Zawartość
ECHO %NOWY_VARIABLE%
5.
Wprowadzanie użytkownika za pomocą`SET /P`: Jeśli ty
`SET /P`w przypadku wprowadzania danych przez użytkownika upewnij się, że wyraźnie go monitujesz i podajesz jasne instrukcje, aby uniknąć nieporozumień.
SET /P WPIS UŻYTKOWNIKA=Wpisz coś:
6.
Uwzględnianie wielkości liter: Należy pamiętać, że w zmiennych środowiskowych zazwyczaj nie jest rozróżniana wielkość liter. To znaczy, że
`%Variable%`I
`%variable%`dostęp do tego samego.
Te wskazówki powinny Cię o tym przekonać
`SET`-Używaj poleceń skutecznie i bezpiecznie.