Список всех переменных среды из командной строки?

645

Я хотел бы знать, возможно ли из командной строки Windows перечислить ВСЕ переменные среды.

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

  • 0
    Может кто-нибудь поделиться решением PowerShell? Это должно быть будущее и все. Правильно?
  • 1
    @ BrunoBronosky PS решение включено в вопрос, и есть также ответ, повторяющий это =)
Показать ещё 1 комментарий
Теги:
command-line
prompt
environment-variables

9 ответов

967
Лучший ответ

Просто сделай

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
  • 5
    Это побуждает меня к имени?
  • 7
    set строчных set работал для меня
Показать ещё 10 комментариев
105

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

SET | more

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

SET > output.txt

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

  • 12
    +1 вывод в файл действительно полезен для длинных, таких как путь
  • 7
    я понятия не имел, что more существует на Windows, +1
Показать ещё 1 комментарий
61

Просто запустите set из cmd.

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

42

Перечислить все переменные среды в Powershell:

Get-ChildItem Env:

источник: https://technet.microsoft.com/en-us/library/ff730964.aspx

  • 4
    Даже если я не использую PowerShell, потому что он не работает для каждой команды cmd, это единственное решение для красивой печати (на 2 столбца) без больших усилий. Чтобы добиться такого же поведения в cmd, вам нужно что-то вроде этого for /f "tokens=1,2 delims==" ... что становится очень сложным ...
  • 5
    Чтобы избежать усечения вывода, я бы использовал следующее: Get-ChildItem Env: | Format-Table -Wrap -AutoSize
11

Я бы сказал, что команда SET действительно не печатает все переменные среды. Например, мы можем повторять такие переменные, как CD, DATE, TIME, но они не указаны в выводе SET.

Было бы интересно получить действительно полный список переменных, которые могут использоваться, например, для пакетной записи.

  • 14
    %CD% , %DATE% , %TIME% , %RANDOM% , %ERRORLEVEL% , %CMDEXTVERSION% , %CMDCMDLINE% - это специальные переменные, см. Их описание в конце вывода help set .
9

Вы можете использовать SET в cmd

Чтобы показать текущую переменную, достаточно SET

Чтобы показать определенную переменную типа "PATH", используйте SET PATH.

Для получения справки введите set /?.

3

не теряйте время для поиска в реестре

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

возвращает меньше заданной команды

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

Как упоминалось в других потоках, вы можете использовать set для перечисления всех переменных окружения или использования

set [environment_varible], чтобы получить определенную переменную со значением.

set [environment_varible]= может использоваться для удаления переменной из пространства.

2

Если вы хотите увидеть переменную окружения, которую вы только что установили, вам нужно открыть новое окно команд. "Переменные, установленные с переменными setx, доступны только в будущих командных окнах, а не в текущем командном окне". (https://technet.microsoft.com/en-us/library/cc755104(v=ws.11).aspx#BKMK_examples)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню