Перечислите все переменные окружения из командной строки


934

Можно ли перечислить все переменные среды из командной строки Windows?

Что-то эквивалентное PowerShell gci env:(или ls env:или dir env:).


1
Может кто-нибудь поделиться решением PowerShell? Это должно быть будущее и все. Правильно?
Бруно Броноски

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

Для описания каждого см. Ss64.com/nt/syntax-variables.html
Сэмюэль Хармер

Ответы:


1354

Просто делать:

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 вы используете powershell? Похоже, что он взломал сет с помощью одной из команд. Это одна из его менее полезных функций! Я задал вопрос об отключении этого здесь
JonnyRaa

3
Может кто-нибудь обновить это, чтобы включить решение PowerShell? Это должно быть будущее и все. Правильно?
Бруно Броноски

3
@NickTimmer, поскольку вы говорите с bash вместо оболочки Windows, это неправильный вопрос / ответ для вас. Посмотрите printenv.
Джон

167

У Джона есть правильный ответ, но немного подробнее рассмотрим синтаксический сахар.

SET | more

позволяет видеть переменные по одной странице за раз, а не всю партию, или

SET > output.txt

отправляет вывод в файл output.txt, который вы можете открыть в блокноте или что-то еще ...


7
я понятия не имел, что moreсуществует на Windows, +1
ardnew

на самом деле он встроен в некоторые функции. Dir например будет страница с / р.
Джон Лорд

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

107

Чтобы получить список всех переменных среды в PowerShell:

Get-ChildItem Env:

Или как предложено user797717, чтобы избежать усечения вывода:

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
user797717

1
gci env:вместо этого Get-ChildItem Env:легче запомнить
Мэтсон Кепсон

Отлично! Я не понимаю, почему это не лучший ответ, если честно: / РЕДАКТИРОВАТЬ: Ой, подождите, я понимаю, почему ... оригинальный вопрос был не о том, как сделать это в Powershell, а в старой школе Командная подсказка: D
Йори Ван Нойвербург

79

Просто беги setот cmd.

Отображает, устанавливает или удаляет переменные среды. При использовании без параметров set отображает текущие настройки среды.


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.