Liệt kê tất cả các biến môi trường từ dòng lệnh


934

Có thể liệt kê tất cả các biến môi trường từ dấu nhắc lệnh của Windows không?

Một cái gì đó tương đương với PowerShell gci env:(hoặc ls env:hoặc dir env:).


1
Ai đó có thể chia sẻ giải pháp PowerShell không? Nó được cho là tương lai và tất cả. Đúng?
Bruno Bronosky 7/12/2016

1
@BrunoBronosky giải pháp PS được bao gồm trong câu hỏi và cũng có câu trả lời lặp lại =)
Jon

Để biết mô tả của từng loại, hãy xem ss64.com/nt/syntax-variables.html
Samuel Harmer

Câu trả lời:


1354

Cứ làm đi:

SET

Bạn cũng có thể làm SET prefixđể xem tất cả các biến có tên bắt đầu bằng prefix.

Ví dụ: nếu bạn chỉ muốn đọc derbydb từ các biến môi trường, hãy làm như sau:

set derby 

... và bạn sẽ nhận được những điều sau đây:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin

7
Điều này nhắc tôi cho một cái tên?
CMCDragonkai

53
@KevinMeredith: Tất cả các lệnh trong shell Windows đều không phân biệt chữ hoa chữ thường.
Jon

12
@CMCDragonkai bạn đang sử dụng powershell? Có vẻ như nó đã được thiết lập với một trong các lệnh cho phép của nó. Đây là một trong những tính năng ít hữu ích của nó! Tôi đã hỏi một câu hỏi về việc vô hiệu hóa điều này ở đây
JonnyRaa

3
Ai đó có thể cập nhật điều này để bao gồm giải pháp PowerShell không? Nó được cho là tương lai và tất cả. Đúng?
Bruno Bronosky 7/12/2016

3
@NickTimmer vì bạn đang nói chuyện với bash thay vì Windows shell, đây là câu hỏi / câu trả lời sai cho bạn. Nhìn vào printenv.
Jon

167

Jon có câu trả lời đúng, nhưng để giải thích thêm một chút với một số cú pháp ..

SET | more

cho phép bạn xem các biến một trang cùng một lúc, thay vì toàn bộ, hoặc

SET > output.txt

gửi đầu ra tới tệp output.txt mà bạn có thể mở trong Notepad hoặc bất cứ điều gì ...


7
tôi không có ý tưởng nào moretồn tại trên Windows, +1
vào

nó thực sự được tích hợp vào một số chức năng. Dir ví dụ sẽ trang với a / p.
John Lord

@ardnew: Bây giờ bạn biết thêm ;-)
user2943111

107

Để liệt kê tất cả các biến môi trường trong PowerShell:

Get-ChildItem Env:

Hoặc theo đề xuất của user797717 để tránh cắt ngắn đầu ra:

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

Nguồn: Tạo và sửa đổi các biến môi trường ( Mẹo của Windows PowerShell trong tuần )


4
Ngay cả khi tôi không sử dụng PowerShell vì nó không hoạt động cho mọi lệnh cmd, đây là giải pháp duy nhất cho một bản in đẹp (trên 2 cột) mà không cần nỗ lực lớn. Để đạt được hành vi tương tự trong cmd, bạn cần một thứ như thế này for /f "tokens=1,2 delims==" ...trở nên rất phức tạp ...
ROMANIA_engineer

6
Để tránh đầu ra bị cắt ngắn, tôi sẽ sử dụng như sau:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717

1
gci env:thay vào đó Get-ChildItem Env:, dễ nhớ hơn
maton kepson

Hoàn hảo! Tôi không hiểu tại sao đây không phải là câu trả lời hàng đầu phải trung thực: / EDIT: Oh, đợi đã, tôi hiểu tại sao ... câu hỏi ban đầu không phải là về cách làm điều đó ở Powershell, mà là ở trường học cũ Commandprompt: D
Yoeri Van Nieuwerburg

79

Đơn giản chỉ cần chạy settừ cmd.

Hiển thị, thiết lập hoặc loại bỏ các biến môi trường. Được sử dụng mà không có tham số, thiết lập hiển thị các cài đặt môi trường hiện tại.


11

Bạn có thể sử dụng SETtrong cmd

Để hiển thị biến hiện tại, chỉ cần SETlà đủ

Để hiển thị một số biến nhất định, chẳng hạn như 'PATH', hãy sử dụng SET PATH.

Để được giúp đỡ, gõ set /?.


2
Điều này khác với câu trả lời hiện có như thế nào?
Peter Mortensen

7

Đừng mất thời gian. Tìm kiếm nó trong sổ đăng ký:

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

trả về ít hơn lệnh SET.


2
mặc dù điều đó có thể đúng, một điểm khác biệt là truy vấn đăng ký trả về REG_EXPAND_SZcác khóa chưa được mở rộng. Ví dụ reg query "HKCU\Environment"cho tôi thấy rằng %TEMP%biến của tôi phụ thuộc vào giá trị của %USERPROFILE%, vì vậy nếu giá trị đó thay đổi, thì giá trị đó sẽ thay đổi %TEMP%. Ngược lại, SETchỉ cần trả lại"C:\Users\mpag\AppData\Local\Temp"
mpag

1
Tại sao bạn nói "không mất thời gian"? Không viết "set" trong dấu nhắc lệnh nhanh hơn "reg query ..."?
Alexandre Huat

4

Nếu bạn muốn xem biến môi trường bạn vừa đặt, bạn cần mở một cửa sổ lệnh mới.

Các biến được đặt với các biến setx chỉ có sẵn trong các cửa sổ lệnh trong tương lai, không có trong cửa sổ lệnh hiện tại. ( Setx, ví dụ )


4

Như đã đề cập trong các câu trả lời khác, bạn có thể sử dụng setđể liệt kê tất cả các biến môi trường hoặc sử dụng

set [environment_variable] để có được một biến cụ thể với giá trị của nó.

set [environment_variable]= có thể được sử dụng để loại bỏ một biến khỏi không gian làm việc.


1
Có, nhưng làm thế nào để trả lời câu hỏi này?
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.