Bagaimana daftar variabel lingkungan global secara terpisah dari variabel lingkungan spesifik pengguna?

13

Di Windows (mis. Versi 10) Anda dapat membuat daftar variabel lingkungan menggunakan perintah

set

Bagaimana Anda mencantumkan hanya variabel lingkungan yang sama untuk semua pengguna atau hanya variabel lingkungan yang untuk pengguna atau sesi saat ini?

RedGrittyBrick
sumber

Jawaban:

17

Hal-hal sedikit lebih rumit daripada yang kadang-kadang terlihat oleh Microsoft.

Banyak variabel lingkungan disimpan dalam Registry. Ini berarti Anda dapat meminta mereka menggunakan regperintah

Umum untuk semua pengguna

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

Khusus untuk sesi pengguna saat ini

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

Ditetapkan oleh pengguna

Jika Anda secara permanen mengatur variabel lingkungan Anda sendiri menggunakan setx variable valueperintah itu disimpan dalam registri tetapi tidak segera tersedia.

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

Jika Anda menggunakan set variable=valueperintah, variabel tersedia segera tetapi tidak disimpan dalam registri. Anda tidak dapat menggunakan regperintah untuk mendaftar mereka meskipun mereka ditunjukkan oleh set. Variabel lingkungan sementara ini tidak bertahan setelah Anda mengakhiri sesi prompt perintah.

Variabel Lingkungan Dinamis

Ada konstruksi yang bertindak seperti variabel lingkungan yang tidak disimpan dalam registri dengan cara ini. Sebagai contoh:

echo %TIME%
RedGrittyBrick
sumber
1
Hanya rasa ingin tahu: apakah mungkin untuk menyegarkan variabel yang sebelumnya ditambahkan ke registri? misalnya setx test removemelalu sesuatu set test %test%sehingga Anda dapat memiliki semua variabel terdaftar dengan yang sederhana set? Saya berpikir bahwa adalah mungkin untuk mengimplementasikan skrip perintah / batch untuk membuat semuanya eksplisit berdasarkan permintaan ...
Hastur
@ Rushur: Ya, itu akan berhasil untuk membuat variabel baru segera tersedia dan persisten.
RedGrittyBrick
@astur @RedGrittyBrick - itu mungkin tapi jelas bukan oneliner di windows cmd. Jika Anda menginstal chocolatey, ia memiliki refreshenv.cmdutilitas yang terdiri dari 10 baris kode dan pada dasarnya ia
meminta
Apakah SETperintah tersebut menunjukkan Dynamic Environment Variables? Saya mencoba untuk menemukan apa saja dan segala sesuatu yang Microsoft Build Tools atur selama sesi, hanya ingin membahas pangkalan saya.
Ungeheuer
1

Untuk keluaran bersih tanpa garis ekstra dan spasi hitam gunakan perintah berikut di cmd.exe:

Variabel lingkungan pengguna:

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

Variabel lingkungan global (sistem):

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

Ini bekerja di Windows 7-10, dan kemungkinan besar di versi sebelumnya juga.

maoizm
sumber
Terima kasih untuk ini. Perhatikan bahwa itu menjatuhkan bagian dari nilai jika memiliki spasi di dalamnya. Jadi entri registri seperti VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools muncul sebagai adil VS140COMNTOOLS=C:\Program.
logam
@metal terima kasih telah melaporkan kasing sudut ini. Jangan ragu untuk mengedit jawaban jika Anda menemukan solusi untuk spasi - Saya tidak punya komputer windows sekarang
maoizm
Saya telah mengirimkan pembaruan untuk efek itu. Anda atau beberapa mod perlu menyetujuinya.
logam
1

ketik perintah batch: echo% temp%

Jika variabel lingkungan "temp" berisi "H: \ Users \ amacm \ AppData \ Local", Windows akan segera merespons dengan yang berikut:

H: \ Users \ amacm \ AppData \ Local

Jika tidak ada variabel lingkungan bernama "temp", Windows akan merespons dengan yang berikut:

% temp%

Seni McDonald
sumber