Cmd.exe dosyasında (sistem çapında) ortam değişkenini ayarlama veya değiştirme


13

Eklemek ve / veya değiştirmek ve / veya komut satırından bir ortam değişkeni silmek için uygun bir yol arıyorum. Özellikle, cmd.exe içinde birkaç değişken eklemek zorunda kaldığım durumlarda kendimi buluyorum.

Birisi bana değiştirmek için GUI olmayan bir yol gösterdi (yani: yeni bir dizin eklemek için) minnettar olacaktır %PATH%.

Değişiklik sadece cmdoturum süresince değil kalıcı olmalıdır .


1
Bulacağınız bir sorun, kalıcı , sistem çapında ortam değişkenlerinde yapılan değişikliklerin çoğunun , kullanıcının oturumu için değiştirilen değerleri kullanması için oturum kapatma / oturum açma (veya yeniden başlatma) gerektirdiğini düşünüyorum .
quack quixote

Yanıtlar:


8

Reg School ile kayıt değişkenlerini doğrudan manipüle etmek için Old School yöntemi para üzerindeydi. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

reg add HKCU\Environment /v PATH /d "%addonpath%;%path%" /f

Bunu, apath.bat adındaki tek satırlık bir komut dosyasına atın.

@echo off
reg add HKCU\Environment /v PATH /d "%~dp0;%path%" /f

Ardından, sağlamanız gereken tek şey komut dosyasını çağırırken eklediğiniz yeni dizinin yoludur ve arandınız:

örneğin: apath.bat% addonpath%

Hinch haklı olmasına rağmen. Vista veya üstünü kullanıyorsanız bunu yapmanın en iyi yolu, kayıt defterini doğrudan makinenizi kurtarabilecek reg komutuyla değiştirme riski olmadan ortam değişkenlerini yaymamızı sağlamak için tasarlanmış SETX komutunu kullanmaktır. ENV değişkenlerini anında kullanacak kadar manipüle edersiniz.


Bu komut yeniden başlatma gerektiriyor mu?
Juzer Ali

Hayır, ancak yeni (cmd) bir işlem kullanmalısınız.
mike

1
Benim için yeniden başlatılması gerekiyor mu? neden? Windows XP, sp3 kullanıyorum.
Changwang Zhang

15

Setx kullanabilirsiniz.

Kullanıcı değişkeni:

SETX PATH "%PATH%;C:\MyDir"

Sistem değişkeni:

SETX PATH "%PATH%;C:\MyDir" /M

SETX'in Vista'dan beri mevcut olduğuna inanıyorum, ancak XP'dayım.
René Nyffenegger

setx.exe dosyasını bir Vista makinesinden kopyalayarak kurtulabilirsiniz. muhtemelen işe yaramaz, ama işe yarayabilir.
quack quixote

2
SETX, Windows Server 2003 için Kaynak Araçları'nın bir parçasıdır. Yalnızca system32 dizininize veya yolunuza eklenen diğer herhangi bir klasöre (tavuk yumurtası!) Ekleyebilirsiniz.
paradroid

Kullanıcı bir değil, sistem değişkeni değiştirebilirsiniz böylece / M parçası gerekir. Teşekkürler!
Andrei Sfat

Belirtilen her iki komut da yanlış. Neden? Windows aslında iki PATH değerini korur: sistem çapında ve kullanıcı başına. Yazdığınızda echo %PATH%, bunların bir araya geldiğini görürsünüz <system path>;<user path>. Bu nedenle, ilk komut sistem yolunun geçerli öğelerini kullanıcı yolunda görünmeye zorlar (bu çok da kötü değildir), ikinci komut ise sistem yolunun geçerli öğelerinin sistem yolunda (kabul edilemez) görünmesine neden olur.
Sasha

1

Sen kullanabilirsiniz HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutorunEğer gizli ayarları diyalog delving olmadan yarı kalıcı değişiklikler yapmak için izin vermek için, bir toplu dosyasına noktaya kayıt defteri anahtarını.


Bildiğim kadarıyla bu sadece cmd.exe (/ d bayrağı olmadan) sonraki çağrıları etkiler, ancak tüm sistem veya diğer (daha sonra çağrılan) süreçleri etkileyecektir.
René Nyffenegger

Bu doğru. Bir avantaj buldum, ne yapacağını bilmeyen farklı süreçler hakkında endişelenmeden daha fazlasını yapabileceğiniz anlamına gelir. Bununla birlikte, her zaman hoş olan herhangi bir etkileşimli istemde çalışacaktır: P
Phoshi

1

GUI'yi kullanmak istemiyorsanız (Denetim Masası, Sistem, Gelişmiş, Ortam Değişkenleri, PATH'de olduğu gibi) REGayarlamak için kullanabilirsiniz HKCU\Environment\PATH.

  • Güncelleme %PATH%
  • REG ADD HKCU\Environment /v PATH /t REG\_EXPAND\_SZ /d "%PATH%" /f

/fVarolan değerin üzerine yazarak kuvvetleri etkileşimli soruya cevap vermek zorunda kalmamak.

Düzenleme: %PATH% alıntılanmalıdır.

Düzenleme: Bu muhtemelen etkili olmadan önce yeniden başlatma veya yeniden oturum açma gerektirdiğini belirtmek gerekir. GUI'de değiştirirken hemen yürürlüğe girer (yeni cmd.exeoturumlar için).

Referans: http://support.microsoft.com/kb/104011

Referansta belirtildiği gibi, bazı kodlar yazmak istiyorsanız, WM_SETTINGCHANGE gönderebilirsiniz ve bu giriş / çıkış gerekliliğinden kaçınmalıdır.


bu çok faydalı olur. Ancak, bu değişkeni sorgularsam, hiçbir şey döndürmez.
PA.

Hrm. XP Pro SP3 İngilizce I On ile benim PATH olsun: REG QUERY HKCU\Environment /v PATH.
opello

kullanıcıya özel bir yol, sistem çapında bir yol değil. nerede yaşadığından emin değilim. bunlar aynı şeye ayarlanabilir ancak genellikle ayrı şeyler içerir (ve çalışma yolunuz bu ikisinin birleşmesidir).
quack quixote

Doğru, HKCU'da. Bağlanan Microsoft KB makalesinde her iki kayıt defteri konumu vardır.
opello

1
Bu neredeyse aradığım şey ... Ayrıca cmd.exe WM_SETTINGCHANGE göndermek için bir yol varsa.
René Nyffenegger

0

Geçerli cmd.exe işlemindeki yolu değiştirmek kolaydır:

PATH c:\MyNewDirectory;%PATH%

PATH komutuyla ilgili yardım için her zaman HELP PATH yapabilirsiniz.


1
Bu sadece oturum için iyi değil mi?
JL.

evet, bu oturumlar boyunca devam etmez.
John T

JL haklı ve kalıcı bir çözüm arıyordum. Sorumu buna göre düzenledim.
René Nyffenegger

0

Gerçekten kalıcı, sistem genelinde değişiklikler için, gerçekten Sistem kontrol panelini (Bilgisayarım -> Özellikler -> Gelişmiş -> Ortam Değişkenleri, WinXP için) kullanmak istersiniz. Buradaki ayarlar, Gezgin kabuğundaki GUI programları da dahil olmak üzere tüm sisteminizi etkiler.

cmd.exeKabukta yalnızca bu değişikliklere ihtiyacınız varsa , bir cmd.exe penceresini başlattığınızda bunları ayarlayan bir toplu iş dosyasını çalıştırabilirsiniz. Phoshi'nin cevabı , HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorunmükemmel bir seçenek gibi görünen - küçük değişiklikler yapmak ve gerekirse komut satırından tekrar çalıştırmaktan bahsediyor . Ancak bu GUI pencerelerini veya Explorer kabuğunu etkilemez.

Aslında Sysinternals'ın bunu yapacak yetenekli bir programı olmadığına şaşırıyorum . Belki başka bir PStools bunu yapabilir?


0

Bunu yapmanın birçok yolu var. REG ADD bir veya REG IMPORT (başka bir bilgisayardan dışa aktarılan bir .REG dosyası kullanarak). SETX / M başka bir şeydir. Grup İlkesi Tercihleri'ni (çok sayıda bilgisayar için en kolay kullanım yolu) kullanarak da itebilirsiniz.


0

Burada bahsedilmeyen başka bir düşünce, kontrol panelini başlatacak ve sizin için girecek bir otomatik kısa komut dosyası oluşturun. Zaten bir AHK kullanıcısıysanız iyi çalışır :-)

https://autohotkey.com/board/topic/63210-modify-system-path-gui/

Ayrıca hklm / system / currentcontrolset001 / control / session manager / çevre: yol anahtarını düzenlemeye ne dersiniz? Ancak aynı anahtar hklm / system / currentcontrolset002 ve hklm / system / currentcontrolset altındadır. Bunun burada doğru olabileceği anlaşılıyor: /programming/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.