Jak wyświetlić globalne zmienne środowiskowe oddzielnie od zmiennych środowiskowych specyficznych dla użytkownika?
13
W systemie Windows (np. Wersja 10) można wyświetlić listę zmiennych środowiskowych za pomocą polecenia
set
Jak wyświetlić tylko zmienne środowiskowe, które są takie same dla wszystkich użytkowników, lub tylko zmienne środowiskowe, które są dla bieżącego użytkownika lub sesji?
Jeśli na stałe ustawisz własną zmienną środowiskową za pomocą setx variable valuepolecenia, zostanie ona zapisana w rejestrze, ale nie będzie natychmiast dostępna.
C:\>setx test removeme
SUCCESS: Specified value was saved.
C:\>reg query "HKCU\Environment"
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
test REG_SZ removeme
Jeśli użyjesz set variable=valuepolecenia, zmienna jest dostępna natychmiast, ale nie jest przechowywana w rejestrze. Nie można użyć regpolecenia, aby je wyświetlić, chociaż są one oznaczone symbolem set. Te tymczasowe zmienne środowiskowe nie są utrzymywane po zakończeniu sesji wiersza polecenia.
Dynamiczne zmienne środowiskowe
Istnieją konstrukty, które działają jak zmienne środowiskowe, które nie są przechowywane w rejestrze w ten sposób. Na przykład:
Ciekawostka: czy można odświeżyć zmienną wcześniej dodaną do rejestru? np. setx test removemewtedy coś set test %test%, co pozwala mieć wszystkie zmienne wymienione za pomocą prostego set? Myślałem, że możliwe jest zaimplementowanie skryptu polecenia / partii, aby wszystkie były wyraźne na żądanie ...
Hastur
@Hastur: Tak, to zadziałałoby, aby nowa zmienna była natychmiast dostępna i trwała.
RedGrittyBrick
@hastur @RedGrittyBrick - jest to możliwe, ale zdecydowanie nie jest oneliner w Windows cmd. Jeśli zainstalujesz Chocolatey, ma refreshenv.cmdnarzędzie, które ma 10 linii kodu i w zasadzie odpytuje i odświeża wpisy rejestru
maoizm
Czy SETpolecenie wyświetla dynamiczne zmienne środowiskowe? Próbuję znaleźć wszystko i wszystko, co narzędzia do kompilacji Microsoft ustawiają podczas sesji, chcę tylko pokryć moje bazy.
Ungeheuer,
2
Aby uzyskać czysty wynik bez dodatkowych linii i czarnych spacji, użyj następujących poleceń w cmd.exe:
Zmienne środowiskowe użytkownika:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Globalne (systemowe) zmienne środowiskowe:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Działa w systemie Windows 7-10, a prawdopodobnie także we wcześniejszych wersjach.
Dzięki za to. Zauważ, że spada część wartości, jeśli ma spacje. Tak więc wpis rejestru VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools pokazuje się jako sprawiedliwy VS140COMNTOOLS=C:\Program.
metal
@metal dzięki za zgłoszenie tej sprawy narożnej. Czuć się swobodnie, aby edytować odpowiedź, jeśli można znaleźć obejście przestrzeni - Nie mam żadnych komputerów z systemem Windows teraz
maoizm
1
Przesłałem aktualizację w tym celu. Ty lub jakiś mod będziesz musiał to zatwierdzić.
metal
1
wpisz polecenie wsadowe: echo% temp%
Jeśli zmienna środowiskowa „temp” zawiera „H: \ Users \ amacm \ AppData \ Local”, system Windows natychmiast zareaguje następująco:
H: \ Users \ amacm \ AppData \ Local
Jeśli nie ma zmiennej środowiskowej o nazwie „temp”, system Windows zareaguje następująco:
setx test removeme
wtedy cośset test %test%
, co pozwala mieć wszystkie zmienne wymienione za pomocą prostegoset
? Myślałem, że możliwe jest zaimplementowanie skryptu polecenia / partii, aby wszystkie były wyraźne na żądanie ...refreshenv.cmd
narzędzie, które ma 10 linii kodu i w zasadzie odpytuje i odświeża wpisy rejestruSET
polecenie wyświetla dynamiczne zmienne środowiskowe? Próbuję znaleźć wszystko i wszystko, co narzędzia do kompilacji Microsoft ustawiają podczas sesji, chcę tylko pokryć moje bazy.Aby uzyskać czysty wynik bez dodatkowych linii i czarnych spacji, użyj następujących poleceń w
cmd.exe
:Zmienne środowiskowe użytkownika:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Globalne (systemowe) zmienne środowiskowe:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Działa w systemie Windows 7-10, a prawdopodobnie także we wcześniejszych wersjach.
źródło
VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
pokazuje się jako sprawiedliwyVS140COMNTOOLS=C:\Program
.wpisz polecenie wsadowe: echo% temp%
Jeśli zmienna środowiskowa „temp” zawiera „H: \ Users \ amacm \ AppData \ Local”, system Windows natychmiast zareaguje następująco:
H: \ Users \ amacm \ AppData \ Local
Jeśli nie ma zmiennej środowiskowej o nazwie „temp”, system Windows zareaguje następująco:
% temp%
źródło