Ustawianie i pobieranie zmiennych środowiskowych systemu Windows z wiersza polecenia?

220

Chcę ustawić zmienną środowiskową z wiersza polecenia, a następnie móc uzyskać do niej dostęp globalnie (na przykład powinienem ją zobaczyć, przechodząc do opcji System -> Zmienne środowiskowe).

Kiedy używam polecenia set, nie jest on dostępny w nowej sesji cmd.

set NEWVAR=SOMETHING
echo %NEWVAR%

Powiązane pytania:

Shane
źródło
1
Wartość zmiennej setx - następnie ponownie uruchom wiersz polecenia
Andrew,

Odpowiedzi:

252

Aby zmienna środowiskowa była dostępna globalnie, musisz ustawić ją w rejestrze. Jak zauważyłeś, po prostu używając:

ustaw NEWVAR = COŚ

po prostu ustawiasz go w bieżącej przestrzeni procesu.

Zgodnie z tą stroną możesz użyć setxpolecenia:

setx COŚ NEWVAR

setxjest wbudowany w system Windows 7, ale w starszych wersjach może być dostępny tylko po zainstalowaniu zestawu Windows Resource Kit

ChrisF
źródło
4
Pamiętaj, że musisz określić limit, na przykład: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"będzie działać. Ale setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45da ci błędy składniowe
MD. Mohiuddin Ahmed
5
@ MD.MohiuddinAhmed To dlatego, że na ścieżce są spacje.
ChrisF,
36

Możemy również użyć „setx var zmienna / M”, aby ustawić var ​​na poziom zmiennej środowiskowej systemu zamiast na poziom użytkownika.

Uwaga: To polecenie należy uruchomić jako administrator.

Minh Chau
źródło
10
setx program "C:\Program Files" /M

/ M dla ustawienia poziomu zmiennej środowiskowej systemu zamiast poziomu użytkownika, np. Odpowiedź @Minh Chau

Test wprowadź opis zdjęcia tutaj

Linia komend RESTART (jeśli nie zrestartujesz linii komend, zmienna środowiskowa nie będzie działać)

wprowadź opis zdjęcia tutaj

Phan Van Linh
źródło
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
8
@DavidPostill moja odpowiedź ma nowy to potrzebujemy restartu wiersza poleceń. Myślę, że to ważne
Phan Van Linh
2

Możesz użyć, setx env var [/M]jak wspomniano powyżej. Jeśli to nie zadziała, możesz użyć refreshenvdo odświeżenia zmiennych środowiskowych. Aby to zrobić, nie musisz ponownie uruchamiać komputera, explorer.exe ani wiersza polecenia.

Edycja: wyraźne odświeżenie nie pojawia się naturalnie w systemie Windows, więc oto źródło: https://pastebin.com/1fJqA0pT
Zapisz jako RefreshEnv.cmd i umieść go w folderze zawartym w zmiennych środowiskowych PATH

DFSFOT
źródło
1
+1 za wzmiankę o „refreshenv” - nigdy wcześniej tego nie spotkałem!
Francis Norton
1

Zmienne systemowe można ustawić za pomocą CMD i rejestru Na przykład zapytanie reg „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
Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie.
DavidPostill
Jednak jest blisko. Korzystanie z REG ADD może to osiągnąć?
TOOGAM,
0

Chcę dodać, że jeśli używasz parametru / s z setx w celu ustawienia zmiennych środowiskowych na komputerze zdalnym, usługa „Rejestr zdalny” musi być uruchomiona na komputerze docelowym, w przeciwnym razie pojawi się komunikat „BŁĄD: nie można ukończyć określonej operacji. ”

(Poprosiłem Microsoft o aktualizację artykułu TechNet na temat setx, aby uwzględnić te informacje).

Tim Bailen
źródło