Daftar semua variabel lingkungan dari baris perintah

934

Apakah mungkin untuk membuat daftar semua variabel lingkungan dari prompt perintah Windows?

Sesuatu yang setara dengan PowerShell gci env:(atau ls env:atau dir env:).

Nicola Cossu
sumber
1
Bisakah seseorang membagikan solusi PowerShell? Seharusnya masa depan dan semuanya. Baik?
Bruno Bronosky
1
@ BrunoBronosky solusi PS termasuk dalam pertanyaan, dan ada juga jawaban yang mengulanginya =)
Jon
Untuk deskripsi masing-masing, lihat ss64.com/nt/syntax-variables.html
Samuel Harmer

Jawaban:

1354

Kerjakan saja:

SET

Anda juga dapat melakukan SET prefixuntuk melihat semua variabel dengan nama yang dimulai dengan prefix.

Misalnya, jika Anda hanya ingin membaca derbydb dari variabel lingkungan, lakukan hal berikut:

set derby 

... dan Anda akan mendapatkan yang berikut:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Jon
sumber
7
Ini meminta saya untuk nama?
CMCDragonkai
53
@KevinMeredith: Semua perintah di shell Windows tidak peka huruf besar-kecil.
Jon
12
@ CMCDragonkai apakah Anda menggunakan PowerShell? Tampaknya telah diatur dengan salah satu perintah-memungkinkannya. Ini adalah salah satu fitur yang kurang berguna! Saya mengajukan pertanyaan tentang menonaktifkan ini di sini
JonnyRaa
3
Dapatkah seseorang memperbarui ini untuk memasukkan solusi PowerShell? Seharusnya masa depan dan semuanya. Baik?
Bruno Bronosky
3
@NickTimmer karena Anda berbicara dengan bash alih-alih Windows shell, ini adalah pertanyaan / jawaban yang salah untuk Anda. Lihatlah printenv.
Jon
167

Jon memiliki jawaban yang tepat, tetapi untuk sedikit lebih rumit dengan beberapa gula sintaksis ..

SET | more

memungkinkan Anda untuk melihat variabel satu halaman sekaligus, daripada keseluruhan lot, atau

SET > output.txt

mengirimkan output ke file output.txt yang dapat Anda buka di Notepad atau apa pun ...

Fetchez la vache
sumber
7
saya tidak tahu moreada di Windows, +1
ardnew
itu sebenarnya dibangun untuk beberapa fungsi juga. Dir misalnya akan halaman dengan a / p.
John Lord
@ardnew: Sekarang Anda tahu lebih banyak ;-)
user2943111
107

Untuk membuat daftar semua variabel lingkungan di PowerShell:

Get-ChildItem Env:

Atau seperti yang disarankan oleh pengguna797717 untuk menghindari pemotongan keluaran:

Get-ChildItem Env: | Format-Table -Wrap -AutoSize

Sumber: Menciptakan dan Memodifikasi Variabel Lingkungan ( Windows PowerShell Tip of the Week )

pengguna52028778
sumber
4
Bahkan jika saya tidak menggunakan PowerShell karena tidak berfungsi untuk setiap perintah cmd, ini adalah satu-satunya solusi untuk pencetakan cantik (pada 2 kolom) tanpa usaha besar. Untuk mencapai perilaku yang sama dalam cmd, Anda memerlukan sesuatu seperti ini for /f "tokens=1,2 delims==" ...yang menjadi sangat rumit ...
ROMANIA_engineer
6
Untuk menghindari keluaran yang terpotong, saya akan menggunakan yang berikut ini:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717
1
gci env:sebagai gantinya Get-ChildItem Env:, lebih mudah diingat
matson kepson
Sempurna! Saya tidak mengerti mengapa ini bukan jawaban teratas untuk jujur: / EDIT: Oh, tunggu, saya mengerti mengapa ... pertanyaan awal bukan tentang bagaimana melakukannya di Powershell, tetapi di sekolah lama Commandprompt: D
Yoeri Van Nieuwerburg
79

Cukup lari setdari cmd.

Menampilkan, mengatur, atau menghapus variabel lingkungan. Digunakan tanpa parameter, atur menampilkan pengaturan lingkungan saat ini.

Grant Thomas
sumber
11

Anda dapat menggunakan SETcmd

Untuk menunjukkan variabel saat ini, SETcukup saja

Untuk menampilkan variabel tertentu seperti 'PATH', gunakan SET PATH.

Untuk bantuan, ketik set /?.

Bidang Boyce
sumber
2
Bagaimana ini berbeda dari jawaban yang ada?
Peter Mortensen
7

Jangan kehilangan waktu. Cari di registry:

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

mengembalikan kurang dari perintah SET.

Paweł Piwowar
sumber
2
walaupun itu mungkin benar, satu perbedaan adalah bahwa permintaan registri mengembalikan REG_EXPAND_SZkunci yang tidak diperluas . Sebagai contoh reg query "HKCU\Environment"menunjukkan kepada saya bahwa %TEMP%variabel saya tergantung pada nilai %USERPROFILE%, jadi jika nilai itu berubah, demikian juga nilai untuk %TEMP%. Sebaliknya, SETkembali saja"C:\Users\mpag\AppData\Local\Temp"
mpag
1
Mengapa Anda mengatakan "jangan kehilangan waktu"? Bukankah menulis "set" di command prompt lebih cepat dari "reg query ..."?
Alexandre Huat
4

Jika Anda ingin melihat variabel lingkungan yang baru saja Anda atur, Anda perlu membuka jendela perintah baru.

Variabel yang diatur dengan variabel setx hanya tersedia di jendela perintah di masa mendatang, bukan di jendela perintah saat ini. ( Setx, Contoh )

Kapten Puget
sumber
4

Seperti disebutkan dalam jawaban lain, Anda dapat menggunakan set untuk membuat daftar semua variabel lingkungan atau penggunaan

set [environment_variable] untuk mendapatkan variabel tertentu dengan nilainya.

set [environment_variable]= bisa digunakan untuk menghapus variabel dari ruang kerja.

Abhishek Gurjar
sumber
1
Ya, tetapi bagaimana ini menjawab pertanyaan?
Peter Mortensen