Ustawianie systemowej zmiennej środowiskowej z pliku wsadowego systemu Windows?

195

Czy można ustawić zmienną środowiskową na poziomie systemu z wiersza polecenia w systemie Windows 7 (a nawet XP w tym przypadku). Korzystam z wiersza polecenia z podwyższonym poziomem uprawnień.

Kiedy używam setpolecenia ( set name=value), zmienna środowiskowa wydaje się być poprawna tylko dla sesji wiersza polecenia.

Santhosh
źródło

Odpowiedzi:

179

Narzędzia obsługi XP (które można zainstalować z dysku CD XP) są dostarczane z programem o nazwie setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Myślę, że system Windows 7 faktycznie jest dostarczany setxjako część standardowej instalacji.

Hugh Allen
źródło
7
Windows 7 (może już Vista) ma standard Setx, z niewielką zmianą? nie ma -iflagi, a po prostu setx /?wyświetla całą pomoc + przykłady
stijn
3
Pamiętaj, że zawsze możesz sprawdzić, czy masz ten program na swojej ścieżce, wpisując, wherea następnie nazwę programu (więc w tym przypadku where setx.exepodczas testowania tego na serwerze Server 2008 i Server 2008SP2 stwierdziłem, że w obu przypadkach istniał w%windir%\System32\setx.exe
aolszowka
2
@stijn - Wersja Win7 również oficjalnie zmieniła wprowadzający flagę z -przedniego ukośnika /. Wygląda jednak na to, że -wersja nadal działa.
TED,
2
Wydaje się, że istnieje ograniczona długość 1024 zawartości zmiennej
setx
Setx udostępniony przez XP Support Tools Tools wymaga ukośnika do przodu /i myślnik -nie działa. setx variable value /m
Keith,
137

Prosty przykład, jak ustawić JAVA_HOME setx.exew wierszu poleceń:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Spowoduje to ustawienie zmiennej środowiskowej „JAVA_HOME” dla bieżącego użytkownika. Jeśli chcesz ustawić zmienną dla wszystkich użytkowników, musisz użyć opcji „-m”. Oto przykład:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Uwaga : musisz wykonać to polecenie jako Administrator.

Uwaga : Upewnij się, aby uruchomić polecenie setx z poziomu okna administracyjnego wiersza polecenia

Mindaugas Jaraminas
źródło
7
Zauważ też, że niektóre narzędzia nie lubią spacji w JAVA_HOME, więc warto użyć Progra~1takiego: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael
1
Gdzie to było przez całe moje życie.
Philip Rego
20

Jeśli ustawisz zmienną za pomocą SETX, nie możesz użyć tej zmiennej ani jej zmian natychmiast. Musisz ponownie uruchomić procesy, które chcą z niego skorzystać.

Skorzystaj z następującej sekwencji, aby bezpośrednio ustawić ją również w procesie ustawiania (działa dla mnie idealnie w skryptach, które wykonują pewne czynności inicjujące po ustawieniu zmiennych globalnych) :

SET XYZ=test
SETX XYZ test
Anton F.
źródło
Dziękuję, to doprowadzało mnie do szału! CMD.EXE potrzebuje desperacko aktualizacji, aby zachowywać się jak zwykła konsola ...!
Salvador Valencia,
Nie rozumiem tego: gdzie mam uruchomić te 2 linie?
Danijel
1
Możesz także wykonać polecenie refreshenvpo użyciu setx, aby skorzystać z nowych zmiennych.
BrianHVB
@BrianHVB refreshenvnie został rozpoznany jako polecenie. Robisz to w cmdlub powershell? (EDYCJA: przetestowana w obu przypadkach, nie działa w żadnej konsoli)
bigp
@bigp ups, masz rację. Jest to polecenie dodawane po zainstalowaniu Chocolatey. Mam czekoladki na wszystkich moich systemach i nie zdawałem sobie sprawy, dopóki nie sprawdziłem.
BrianHVB
2

W przypadku XP użyłem narzędzia (darmowego / darowizny) o nazwie „RAPIDEE” (Rapid Environment Editor), ale SETX jest zdecydowanie wystarczający dla Win 7 (wcześniej o tym nie wiedziałem).

FractalSpace
źródło
2

Zmienne systemowe można ustawić za pomocą CMD i rejestru Na przykład reg zapytanie „HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment” / v ŚCIEŻKA

Wszystkie powszechnie używane kody CMD i zmienne systemowe podano tutaj: Ustaw zmienne środowiskowe systemu Windows za pomocą CMD .

Otwórz CMD i wpisz Set

Otrzymasz wszystkie wartości zmiennej systemowej.

Wpisz set java, aby poznać szczegóły ścieżki Java zainstalowanej w systemie operacyjnym Windows.

Himanshu Singh
źródło
1

Na wypadek gdybyś musiał usunąć zmienną, możesz użyć SETENV z Vincenta Faticy dostępnego na stronie http://barnyard.syr.edu/~vefatica . Nie do końca aktualne ('98), ale wciąż działa na Windows 7 x64.

anulować
źródło
5
setx pozwala również usunąć, ustawiając wartość pustą
Steve Lloyd