Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Zmienna dostępna tylko w sesji CMD

Termin Definicja
Zmienna dostępna tylko w sesji CMD

Zmienna dostępna tylko w sesji CMD wskazuje na ustawienie jej poleceniem set działającym wyłącznie w bieżącym oknie konsoli.

Zakres obowiązywania zmiennej w środowisku CMD

Zmienna dostępna tylko w sesji CMD jest elementem środowiska konkretnego procesu cmd.exe. Jej wartość istnieje od chwili ustawienia poleceniem set do zakończenia danego okna wiersza polecenia albo do usunięcia zmiennej. Przykładowo polecenie set TEMP_TEST=wartosc tworzy zmienną o nazwie TEMP_TEST i przypisuje jej tekst wartosc. Zmiana jest widoczna w tej samej sesji CMD, lecz nie tworzy trwałego wpisu konfiguracyjnego dla kolejnych uruchomień systemu.

Warto odróżnić sesję CMD od całego systemu Windows. Zmienna ustawiona w jednym oknie nie staje się automatycznie dostępna w drugim, już uruchomionym oknie. Nie jest również dopisywana do trwałych zmiennych użytkownika ani do zmiennych systemowych. Jeżeli z tego okna zostanie uruchomiony program, proces potomny zwykle otrzyma kopię aktualnego środowiska rodzica, w tym zmienną ustawioną przez set. Program uruchomiony wcześniej nie otrzyma jej wstecznie, ponieważ środowisko procesu jest przygotowywane przy jego tworzeniu.

Odczyt, modyfikowanie i usuwanie wartości

W CMD wartość zmiennej odczytuje się przez zapis otoczony znakami procenta, na przykład echo %TEMP_TEST%. Interpreter rozwija taki zapis do bieżącej wartości przed wykonaniem polecenia. Gdy zmienna nie istnieje, odwołanie w zwykłym wierszu polecenia pozostaje nierozwinięte albo może skutkować pustym fragmentem, zależnie od dokładnego zapisu i kontekstu. Do sprawdzania wielu zmiennych przydatne jest polecenie set bez argumentów, które wyświetla zmienne środowiskowe dostępne w bieżącej sesji. Polecenie set TEMP_TEST pokazuje zmienne, których nazwa zaczyna się od podanego tekstu.

Zmianę wartości wykonuje się ponownie przez set, na przykład set TEMP_TEST=nowa_wartosc. Spacje wpisane po znaku równości stają się częścią wartości, dlatego zapis set TEMP_TEST =wartosc nie oznacza ustawienia zmiennej TEMP_TEST, lecz tworzy nazwę zawierającą spację przed znakiem równości. Usunięcie zmiennej następuje przez polecenie set TEMP_TEST=, bez tekstu po znaku równości. Operację można zweryfikować poleceniem set TEMP_TEST albo próbą odczytu wartości przez echo %TEMP_TEST%.

Podczas pracy w pliku wsadowym trzeba uwzględnić sposób rozwijania zmiennych. Przy zwykłym rozwijaniu procentowym wartość jest podstawiana podczas interpretowania linii lub bloku poleceń. Jeżeli skrypt wykonuje kilka zmian zmiennej wewnątrz nawiasów, wynik może różnić się od oczekiwanego. W takich sytuacjach można użyć opóźnionego rozwijania i składni !NAZWA_ZMIENNEJ!, włączając je poleceniem setlocal EnableDelayedExpansion. Jest to mechanizm interpretera CMD, a nie sposób trwałego zapisywania zmiennych.

Różnica między sesją CMD a trwałą konfiguracją

Sesyjny charakter polecenia set ma znaczenie przy testowaniu programów, narzędzi programistycznych i skryptów. Jeżeli aplikacja wymaga określonej zmiennej, można otworzyć CMD, ustawić ją poleceniem set, a następnie uruchomić aplikację z tego samego okna. Po zamknięciu sesji ustawienie znika. Nowe okno CMD nie odziedziczy go, chyba że zostanie uruchomione jako proces potomny z odpowiednio przygotowanego środowiska albo zmienna została zapisana trwale innym mechanizmem.

Nie należy mylić set z poleceniem setx. setx zapisuje zmienną w trwałej konfiguracji środowiska użytkownika lub systemu, ale nie aktualizuje środowiska bieżącego okna CMD. Z tego powodu po użyciu setx zazwyczaj trzeba otworzyć nową sesję, aby nowe procesy odczytały zapisaną wartość. Z kolei polecenie set działa natychmiast w bieżącym interpreterze, lecz nie pozostawia trwałego wpisu. Wybór właściwego polecenia zależy więc od tego, czy ustawienie ma służyć jednemu uruchomieniu, czy kolejnym sesjom.

W skryptach wsadowych dodatkową kontrolę zapewnia setlocal. Po jego wykonaniu zmiany środowiska pozostają lokalne dla wykonywanego fragmentu pliku, a endlocal przywraca wcześniejszy stan. Dzięki temu skrypt może tymczasowo zmienić na przykład PATH lub własną zmienną roboczą bez pozostawiania zmian w środowisku wywołującego skryptu. Zwykłe zamknięcie okna CMD również kończy zakres sesyjnych modyfikacji, natomiast procesy uruchomione wcześniej zachowują własne, wcześniej otrzymane środowisko.

Sprawdzanie zmiennej podczas diagnostyki komputera

Nieprawidłowa wartość zmiennej sesyjnej może powodować pozornie niezrozumiałe zachowanie polecenia lub programu. Przykładem jest modyfikacja zmiennej PATH, która określa katalogi przeszukiwane przez CMD podczas uruchamiania programu bez pełnej ścieżki. Tymczasowe dopisanie katalogu może pomóc w teście, ale błędny zapis może sprawić, że interpreter uruchomi inną wersję programu albo nie znajdzie pliku wykonywalnego. Podobnie zmienne używane przez konkretne narzędzia mogą wskazywać plik konfiguracyjny, katalog roboczy lub tryb działania, jednak ich znaczenie zawsze zależy od dokumentacji danego programu.

Podstawowa kontrola powinna obejmować sprawdzenie dokładnej nazwy zmiennej, jej wartości oraz miejsca, z którego uruchomiono program. W CMD można użyć poleceń set, echo %NAZWA% oraz where nazwa_programu, aby porównać środowisko sesji z faktycznie wybieranym plikiem wykonywalnym. Warto również uruchomić nowe okno CMD i sprawdzić, czy problem znika. Jeżeli zmienna była ustawiona wyłącznie przez set, różnica między starym a nowym oknem jest oczekiwanym skutkiem zakresu sesji, a nie dowodem uszkodzenia systemu.

Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów, komputerów PC i ich podzespołów, a analiza zmiennych środowiskowych CMD może być jednym z elementów rozpoznania problemu z uruchamianiem popularnego oprogramowania na komputerze użytkownika.