Mam zmienną systemową PATH z konfiguracją na poziomie systemu. Używam zmiennej PATH użytkownika, aby uzupełnić PATH konfiguracją specyficzną dla użytkownika.
Chciałbym zaktualizować zmienną PATH użytkownika z wiersza poleceń, na przykład za pomocą setx.
Ale nie wiem jak odwoływać się do istniejącej ścieżki użytkownika w setx.
W następującym poleceniu (setx bez / M)
setx PATH c:\my-user-specifc-bin-path;%PATH%
pierwsza ŚCIEŻKA oznacza ŚCIEŻKĘ użytkownika, ale druga% ŚCIEŻKA% zostanie zastąpiona ŚCIEŻKĄ „pełną” (użytkownik + system).
Oznacza to, że cała ścieżka systemowa zostanie zduplikowana w ścieżce użytkownika ... co zdecydowanie nie jest tym, czego chcę.
Chciałbym:
- Wpływa tylko na zmienną środowiskową PATH użytkownika
- Dołącz / dołącz jeden lub więcej elementów ścieżki do istniejącej wartości
- Zrób to z wiersza poleceń.
windows
command-line
path
environment-variables
Christian Lemer
źródło
źródło
;%PATH%
, prosisz o dołączenie istniejącej ścieżki (pochodzącej ze ścieżki systemowej).Odpowiedzi:
Wersja PowerShell, ustaw PATH dla użytkownika:
źródło
Aby ustawić zastąpienie PATH użytkownika poprzednią wartością:
Aby dodać wartość „C: \ MyPath0” do istniejącej ŚCIEŻKI użytkownika:
Aby dodać wartość „C: \ MyPath2” do istniejącej ŚCIEŻKI użytkownika:
Warunek „if-else” jest wymagany, ponieważ ścieżka użytkownika może zawierać spacje lub nie. Jeśli chcesz, możesz zapisać polecenia jako ogólne pliki wsadowe (pamiętaj, aby podwoić każdy znak%), które akceptują wartość do ustawienia / uzupełnienia / dołączenia jako argument.
Plik wsadowy
źródło
for /?
powie ci wszystko, co musisz wiedzieć. :) Nie chciałem powielać tego wszystkiego niepotrzebnie i pomyślałem, że i tak informacje będą łatwe do zrozumienia.PATH
kończy już średnikiem, w którym to przypadku dołączanie przekazanego katalogu powinno odbywać się bez dodatkowego średnika. Ale największym problemem z tym kodem jest uszkodzenie użytkownika,PATH
jeśli łańcuch staje się dłuższy niż 1024 znaki z powodusetx
obcięcia łańcucha do 1024 znaków z wyświetleniem odpowiedniej informacji przed dodaniem jej do rejestru Windows. Może się zdarzyć, że zamiast dopisanego katalogu istniejący użytkownikPATH
zostanie obcięty (zniekształcony) przez ten kod.potrzeba
SETX /M
, domyślnieSETX
ustawiony naHKEY_CURRENT_USER
źródło
To wydaje się działać:
źródło
PATH
za pomocą lokalnegoPATH
. Ten wiersz polecenia naprawdę psuje użytkownikaPATH
poprzez dodanie do rejestru systemu Windows dla użytkownikaPATH
ciągc:\my-user-specifc-bin-path-which-may-contain-spaces;%C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%
w najlepszym wypadku. Wszyscy używający tego wiersza poleceń z powodzeniem uszkodzili ustawienia użytkownikaPATH
, a więc lokalne, takPATH
jak są używane przez wszystkie procesy uruchomione z bieżącym kontem użytkownika po ponownym uruchomieniu systemu Windows lub wylogowaniu / zalogowaniu.