set

Wyświetla, ustawia lub usuwa zmienne środowiskowe sesji.

set to wbudowane polecenie interpretera cmd.exe w Windows, które zarządza zmiennymi środowiskowymi bieżącej sesji. Używasz go, gdy chcesz zobaczyć, jaką wartość ma PATH albo TEMP, podstawić własną zmienną do skryptu .bat, albo szybko coś policzyć bez odpalania kalkulatora. Jedno zapamiętaj od razu: wszystko, co ustawisz przez set, żyje tylko do zamknięcia okna konsoli. To nie jest trwała konfiguracja systemu — od tego jest setx.

Składnia i najważniejsze opcje

Podstawowa składnia: set [zmienna[=[wartość]]]

  • set (bez argumentów) — wypisuje wszystkie zmienne środowiskowe sesji.
  • set nazwa — pokazuje wszystkie zmienne, których nazwa zaczyna się od podanego prefiksu (np. set PA pokaże PATH i PATHEXT).
  • set nazwa=wartość — tworzy lub nadpisuje zmienną.
  • set nazwa= — usuwa zmienną (pusta wartość po znaku równości kasuje ją całkowicie).
  • set /A wyrażenie — traktuje prawą stronę jako wyrażenie arytmetyczne i je oblicza (operatory + - * / %, przesunięcia bitowe, nawiasy).
  • set /P zmienna=tekst — wyświetla tekst zachęty i wczytuje do zmiennej linię wpisaną przez użytkownika.

Przykłady użycia

  • set — zrzuca całą listę zmiennych; dobre na start, gdy szukasz, jak coś się nazywa.
  • set PROJEKT=C:\repo\learningzone — tworzy zmienną, do której odwołasz się później jako %PROJEKT%.
  • set PATH=%PATH%;C:\narzedzia — dokleja nowy katalog do istniejącej ścieżki, nie kasując starej zawartości.
  • set /A wynik=(4+6)*2 — liczy wyrażenie i zapisuje 20 do zmiennej wynik.
  • set /P login=Podaj login: — wyświetla monit i wczytuje to, co wpiszesz, do zmiennej login; klasyk w interaktywnych skryptach.

Częste błędy i pułapki

Największy klasyk to spacje wokół znaku równości. set VAR = 5 tworzy zmienną o nazwie VAR (ze spacją!) i wartości 5 — nie o to ci chodziło. Pisz set VAR=5 bez spacji. Druga pułapka to cudzysłowy: set VAR="tekst" zapisze cudzysłowy jako część wartości. Gdy wartość ma spacje, ujmij w cudzysłów całość razem z nazwą: set "VAR=tekst ze spacjami" — wtedy cudzysłowy nie wejdą do wartości.

Pamiętaj też, że set to komenda cmd.exe, a nie PowerShella — w PowerShellu zmienną środowiskową ustawisz przez $env:VAR="wartosc", nie przez set. I najważniejsze: zmiany są ulotne. Zamkniesz okno i po zmiennej. Do trwałego zapisu (w rejestrze użytkownika) potrzebujesz setx — ten z kolei ma limit długości i NIE udostępnia świeżej wartości w oknie, w którym ją ustawiłeś. Drobiazg na koniec: set z cmd to nie to samo co set w bashu na Linuksie — tam to zupełnie inne polecenie.

Powiązane polecenia: setx, echo, path, setlocal, endlocal.