Küresel ortam değişkenleri, kullanıcıya özel ortam değişkenlerinden ayrı olarak nasıl listelenir?


11

Windows'ta (örneğin sürüm 10), komutları kullanarak ortam değişkenlerini listeleyebilirsiniz.

set

Yalnızca tüm kullanıcılar için aynı olan ortam değişkenlerini veya yalnızca geçerli kullanıcı veya oturum için olan ortam değişkenlerini nasıl listelersiniz?

Yanıtlar:


14

İşler, Microsoft'un göründüğünden biraz daha karmaşık.

Ortam değişkenlerinin çoğu Kayıt Defterinde saklanır. Bu, onları regkomutu kullanarak sorgulayabileceğiniz anlamına gelir.

Tüm kullanıcılar için ortak

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

Mevcut kullanıcı oturumuna özgü

reg query HKCU\Environment
reg query "HKCU\Volatile Environment"

Kullanıcıya göre ayarla

setx variable valueKomutu kullanarak kendi ortam değişkeninizi kalıcı olarak ayarlarsanız , kayıt defterinde saklanır, ancak hemen kullanılabilir duruma getirilmez.

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

set variable=valueKomutu kullanırsanız değişken hemen kullanılabilir ancak kayıt defterinde saklanmaz. regGösterilse de, onları listelemek için komutu kullanamazsınız set. Bu geçici ortam değişkenleri, komut istemi oturumunu sonlandırdıktan sonra da devam etmez.

Dinamik Çevre Değişkenleri

Bu şekilde kayıt defterinde saklanmayan ortam değişkenleri gibi davranan yapılar vardır. Örneğin:

echo %TIME%

1
Sadece bir merak: önceden kayıt defterine eklenen değişkeni yenilemek mümkün mü? örneğin setx test removemeo zaman bir şeyle set test %test%listelenen tüm değişkenleri basit bir şekilde listeleyebilesiniz setmi? Talep üzerine hepsini açık hale getirmek için bir komut / toplu komut dosyası uygulamanın mümkün olduğunu düşünüyordum ...
Hastur

@Hastur: Evet, bu hem hemen kullanılabilir hem de kalıcı olan yeni bir değişken yapmaya çalışır.
RedGrittyBrick

@hastur @RedGrittyBrick - bu mümkün ancak kesinlikle windows cmd'de bir oneliner değil. Eğer chocolatey'i refreshenv.cmd
kurarsanız

Does SETkomut gösterisi Dinamik Ortam Değişkenleri? Microsoft'un Oluşturma Araçları'nın bir oturum sırasında ayarladığı her şeyi ve her şeyi bulmaya çalışıyorum, üslerimi örtmek istiyorum.
Ungeheuer

1

Fazladan çizgi ve siyah boşluksuz temiz çıktı almak için aşağıdaki komutları kullanın cmd.exe:

Kullanıcı ortamı değişkenleri:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I

Global (sistem) ortam değişkenleri:

FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I

Windows 7-10'da ve büyük olasılıkla önceki sürümlerinde de çalışıyor.


Bunun için teşekkürler. İçinde boşluk varsa, değerin bir kısmını bıraktığını unutmayın. Yani gibi bir kayıt defteri girdisi VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools , sadece gibi gösterir VS140COMNTOOLS=C:\Program.
metal

@metal bu köşe durumunu bildirdiğiniz için teşekkür ederiz.
Alanlar

Bu etki için bir güncelleme gönderdim. Siz veya bazı modların onaylaması gerekecek.
metal

1

toplu iş komutunu yazın: echo% temp%

"Temp" ortam değişkeni "H: \ Users \ amacm \ AppData \ Local" içeriyorsa, Windows hemen aşağıdakilerle yanıt verir:

H: \ Users \ amacm \ AppData Local \

"Temp" adında bir ortam değişkeni yoksa, Windows aşağıdakilerle yanıt verir:

% Temp%


Bu, küresel ve kullanıcıya özgü değişkenleri nasıl ayırt edebileceği sorusuna cevap vermiyor.
John Hennig
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.