Mam dwie zmienne zdefiniowane przez użytkownika:
ANT_HOME ustawiony na% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME ustawiony na C: \ Program Files \ Java \ jdk1.6.0_23
Chcę dodać te ścieżki do zmiennej systemowej, aby uzyskać dostęp do plików wykonywalnych w ich folderach bin. próbowałem
ŚCIEŻKA ustawiona na [inne ścieżki];% ANT_HOME% \ bin;% JAVA_HOME% \ bin
To jednak nie działa. Kiedy otwieram wiersz polecenia i echo% PATH%, zmienne użytkownika nie są rozwijane . Zatem ścieżka pokazuje dosłownie;% ANT_HOME% \ bin;% JAVA_HOME% \ bin
Wydaje mi się, że dobrze to działa na moich starych systemach Windows XP. Jak to skonfigurować w systemie Windows 7?
windows-7
environment-variables
Michael Prescott
źródło
źródło
Odpowiedzi:
UPDATE NO.2 - Teraz do rzeczywistego pytanie: Dlaczego zagnieżdżone, zmienne utworzone przez użytkownika nie rozwijać?
Istnieją pewne ogólne problemy dotyczące rozszerzania zmiennych w systemie Windows. Natknąłem się już na ten sam problem i nie znalazłem żadnych wyraźnych, powtarzalnych okoliczności - poziom rekurencji, przy którym rozszerzenie się nie udaje, nie jest spójny, postacie specjalne nie wydają się odgrywać żadnej roli itp.
Jedynym wykonalnym obejściem, jakie znalazłem, jest dodanie poziomu rekurencji zmiennych według poziomu rekurencji. Oznacza to: Spróbuj usunąć wszystkie zmienne, które chcesz zagnieździć ze sobą (w tym wywołania PATH do zmiennych zdefiniowanych przez użytkownika), a następnie uruchom od nowa. Zdefiniuj podstawowe zmienne (itp. ANT-HOME), zatwierdź, sprawdź, czy jest rozwinięty, jeśli tak, przejdź do następnego poziomu zatwierdzenia, sprawdź ... masz pomysł.
ZAKTUALIZOWANA ODPOWIEDŹ - Definiowanie stałych zmiennych środowiskowych za pomocą CLI i GUI - Przewiń w dół, aby uzyskać oryginalną odpowiedź
Metoda GUI:
W systemie Windows 7 po prostu wpisz „system” w wierszu polecenia META, a zobaczysz wpis „Edytuj zmienne środowiska systemowego”. Następnie kliknij „Zmienne środowiskowe”. Tam możesz albo edytować zmienną systemową PATH (dolna lista), albo dodać / edytować nową zmienną PATH do zmiennych środowiskowych użytkownika.
Metoda wiersza poleceń:
Aby trwale zmienić zmienne środowiskowe, musisz użyć polecenia SETX w wierszu polecenia systemu Windows. W przeciwieństwie do innych wersji systemu Windows, jest on wbudowany w system Windows 7. Jego składnia różni się bardzo od SET, ale jest również potężna. Musisz jednak zachować ostrożność, łatwo jest zepsuć zmienne za pomocą SETX.
Domyślnie zmieniasz zmienne użytkownika . Możesz mieć zmienną środowiskową użytkownika PATH, która na szczęście współistnieje ze zmienną systemową PATH. Jeśli jeszcze go nie zdefiniowałeś, zrób to, wpisując:
SETX PATH yourpath
Możesz także dodać wartość do zmiennej systemowej PATH. Aby to zrobić, musisz najpierw wywołać wiersz komend z uprawnieniami administratora. Aby to zrobić, naciśnij klawisz Meta (Windows), wpisz
cmd
i naciśnijCTRL
+SHIFT
+ENTER
i potwierdź okno dialogowe UAC.Aby dodać nowe wartości do ścieżki, możesz teraz wprowadzić
Ważne jest przestrzeganie tej składni! Jeśli najpierw nie podasz% path%, wszystkie istniejące wartości ścieżki zostaną utracone i zastąpione tylko nową ścieżką. Przełącznik / m na końcu ustawia zmienną w środowisku systemowym.
Pamiętaj, że musisz użyć nowego wiersza poleceń, aby skorzystać z nowej zmiennej.
W witrynie TechNet znajduje się również pełne odniesienie do SETX .
OLD ANSWER Polecenie SET aktualizuje zmienne tylko na czas trwania bieżącej sesji wiersza poleceń.
Prawidłowa składnia dodawania wartości do zmiennej to „set [zmienna] =% [zmienna]%; [nowa wartość]„
Zauważ, że po lewej stronie znaku równości musisz pominąć znaki procentu!
Źródło: odniesienie do wiersza polecenia TechNet dla systemu Windows Server
źródło
Artykuł pomocy technicznej Microsoft z 2007 roku - numer 329308 - opisuje błąd w Shell32.dll, który jest przyczyną tego problemu. Rozwiązaniem jest dodanie
PATH
zmiennej do listy zmiennych użytkownika, która jest ustawiona naTo działało wokół problemu. Nie lubię ustawiać go tylko dla mojego użytkownika, ale jakoś mój system wykazuje objawy tego starego błędu i nie widzę jeszcze lepszej odpowiedzi.
źródło