Перерахуйте всі змінні середовища з командного рядка


932

Чи можна перерахувати всі змінні середовища з командного рядка Windows?

Щось еквівалентне gci env:(або ls env:або dir env:) PowerShell .


1
Чи може хтось поділитися рішенням PowerShell? Це має бути майбутнє і все. Правильно?
Бруно Броноський

1
@BrunoBronosky рішення PS включено у запитання, а також є відповідь, що повторює його =)
Jon

Опис кожного з них дивіться у ss64.com/nt/syntax-variables.html
Самуель

Відповіді:


1352

Просто зробіть:

SET

Ви також SET prefixможете переглянути всі змінні з іменами, що починаються з prefix.

Наприклад, якщо ви хочете читати лише derbydb зі змінних оточення, зробіть наступне:

set derby 

... і ви отримаєте наступне:

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

7
Це спонукає мене до імені?
CMCDragonkai

53
@KevinMeredith: Усі команди в оболонці Windows не залежать від регістру.
Іван

12
@CMCDragonkai Ви використовуєте повноваження? Здається, що він мав набір хитів з одним із своїх команд-літів. Це одна з його менш корисних особливостей! Я поставив питання про відключення цього тут
JonnyRaa

2
Чи може хтось оновити це, щоб включити рішення PowerShell? Це має бути майбутнє і все. Правильно?
Бруно Броноський

3
@NickTimmer, оскільки ви говорите з bash замість оболонки Windows, це неправильне питання / відповідь для вас. Погляньте printenv.
Іван

167

Джон має правильну відповідь, але детальніше зупинитися на синтаксичному цукрі.

SET | more

дає змогу бачити змінні однієї сторінки одночасно, а не всю партію, або

SET > output.txt

надсилає вихід у файл output.txt, який ви можете відкрити в Блокноті або будь-якому іншому ...


7
Я не мав ідеї moreв Windows, +1
вдень

він фактично вбудований і в деякі функції. Dir, наприклад, буде сторінка з / p.
Джон Лорд

@ardnew: Тепер ви знаєте більше ;-)
user2943111

106

Щоб перелічити всі змінні середовища в PowerShell:

Get-ChildItem Env:

Або, як пропонує користувач797717, щоб уникнути усічення вихідних даних:

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

Джерело: Створення та змінення змінних середовища ( Windows PowerShell Порада тижня )


4
Навіть якщо я не використовую PowerShell, оскільки він не працює для кожної команди cmd, це єдине рішення для гарної друку (на 2 колонках) без великих зусиль. Щоб досягти такої ж поведінки в cmd, вам потрібно щось подібне, for /f "tokens=1,2 delims==" ...що стає дуже складним ...
ROMANIA_engineer

6
Щоб уникнути Get-ChildItem Env: | Format-Table -Wrap -AutoSize
обрізання

1
gci env:натомість Get-ChildItem Env:простіше запам’ятати
Матсон Кепсон,

Ідеально! Я не бачу, чому це не найкраща відповідь, якщо чесно: / EDIT: О, чекайте, я розумію, чому ... оригінальне питання було не про те, як це зробити в Powershell, а в старій школі Commandprompt: D
Йоєрі Ван Нойвербург

79

Просто біжіть setвід cmd.

Відображає, встановлює або видаляє змінні середовища. Використовується без параметрів, набір відображає поточні настройки середовища.


11

Ви можете використовувати SETв cmd

Щоб показати поточну змінну, SETдостатньо просто

Щоб показати певну змінну, наприклад "PATH", використовуйте SET PATH.

Для довідки введіть set /?.


2
Чим це відрізняється від існуючих відповідей?
Пітер Мортенсен

7

Не втрачайте часу. Шукайте його в реєстрі:

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

повертає менше, ніж команда SET.


2
хоча це може бути правдою, одна різниця полягає в тому, що запит реєстру повертає нерозгорнуті REG_EXPAND_SZключі. Наприклад, reg query "HKCU\Environment"показує мені, що моя %TEMP%змінна залежить від значення %USERPROFILE%, тому, якщо це значення змінюється, так би було значення для %TEMP%. Навпаки, SETпросто повертається"C:\Users\mpag\AppData\Local\Temp"
mpag

1
Чому ви говорите "не втрачайте час"? Чи не писати "set" у командному рядку швидше, ніж "reg query ..."?
Олександр Хуат

4

Якщо ви хочете побачити змінну середовища, яку ви тільки що встановили, вам потрібно відкрити нове вікно команд.

Змінні, встановлені зі змінними setx, доступні лише у майбутніх вікнах команд, а не у поточному вікні команд. ( Setx, Приклади )


4

Як згадується в інших відповідях, ви можете використовувати setдля переліку всіх змінних середовищ або використання

set [environment_variable] щоб отримати конкретну змінну зі своїм значенням.

set [environment_variable]= можна використовувати для видалення змінної з робочої області.


1
Так, але як це відповідає на питання?
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.