【问题标题】:List all environment variables from the command line从命令行列出所有环境变量
【发布时间】:2011-07-16 16:43:52
【问题描述】:

是否可以从 Windows 的命令提示符列出 所有 环境变量?

相当于 PowerShell 的 gci env:(或 ls env:dir env:)。

【问题讨论】:

标签: windows command-line environment-variables prompt


【解决方案1】:

只要做:

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

【讨论】:

  • 这提示我输入名字?
  • @KevinMeredith:Windows shell 中的所有命令都不区分大小写。
  • @CMCDragonkai 你在用powershell吗?似乎它已经使用它的一个 command-let 劫持了 set。这是它不太有用的功能之一!我问了一个关于禁用此here 的问题
  • 有人可以更新它以包含 PowerShell 解决方案吗?它应该是未来和一切。对吗?
  • 这不能保证有效。这需要启用命令扩展。它们在较新的窗口上默认启用,但在较旧的窗口上不启用,并且可以关闭。
【解决方案2】:

Jon 有正确的答案,但要详细说明一些语法糖......

SET | more

使您能够一次查看一页的变量,而不是全部,或者

SET > output.txt

将输出发送到文件 output.txt,您可以在 Notepad 或其他任何地方打开该文件...

【讨论】:

  • 我不知道 Windows 上存在 more,+1
  • 它实际上也内置在某些功能中。例如,Dir 将使用 /p 进行分页。
【解决方案3】:

列出 PowerShell 中的所有环境变量:

Get-ChildItem Env:

或者按照 user797717 的建议避免输出截断:

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

来源:Creating and Modifying Environment VariablesWindows PowerShell 本周提示

【讨论】:

  • 即使我不使用 PowerShell,因为它不适用于每个 cmd 命令,这也是无需付出很大努力即可实现漂亮打印(在 2 列上)的唯一解决方案。要在 cmd 中实现相同的行为,您需要像 for /f "tokens=1,2 delims==" ... 这样的东西,这变得非常复杂......
  • 为避免输出被截断,我将使用以下内容:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
  • gci env: 而不是Get-ChildItem Env:,更容易记住
  • 完美!老实说,我不明白为什么这不是最佳答案:/ 编辑:哦,等等,我明白为什么......最初的问题不是关于如何在 Powershell 中做到这一点,而是在老派命令提示符:D
【解决方案4】:

只需从cmd 运行set

显示、设置或删除环境变量。不带参数使用,set显示当前环境设置。

【讨论】:

  • 这些天似乎不起作用(2021 年)` $ set $ cmdlet Set-Variable at command pipeline position 1 $ 为以下参数提供值: $ Name[0]: $ Set-变量:无法将参数绑定到参数“名称”,因为它是一个空数组。 `
  • set 在 cmd 中运行,而不是 Powershell @JayKilleen
【解决方案5】:

你可以在cmd中使用SET

要显示当前变量,SET 就足够了

要显示某些变量,例如“PATH”,请使用SET PATH

如需帮助,请输入set /?

【讨论】:

  • 这与现有答案有何不同?
【解决方案6】:

不要浪费时间。在注册表中搜索:

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

返回小于 SET 命令。

【讨论】:

  • 虽然这可能是真的,但一个区别是注册表查询返回未扩展的REG_EXPAND_SZ 键。例如reg query "HKCU\Environment" 显示我的%TEMP% 变量取决于%USERPROFILE% 的值,因此如果该值发生变化,%TEMP% 的值也会发生变化。相比之下,SET 只返回 "C:\Users\mpag\AppData\Local\Temp"
  • 为什么说“不要浪费时间”?在命令提示符下写“set”不是比“reg query ...”快吗?
【解决方案7】:

正如其他答案中提到的,您可以使用set 列出所有环境变量或使用

set [environment_variable] 获取特定变量及其值。

set [environment_variable]= 可用于从工作区中删除变量。

【讨论】:

  • 是的,但这如何回答这个问题?
【解决方案8】:

非扩展变量-

用户变量-

reg query HKEY_CURRENT_USER\Environment

系统变量-

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

扩展变量-

在 CMD 中 -

SET

在 Powershell 中 -

来源 - https://devblogs.microsoft.com/scripting/powertip-use-windows-powershell-to-display-all-environment-variables/

dir env:

【讨论】:

  • set 本身不适用于 Github Actions,但 reg query 可以!
【解决方案9】:

如果要查看刚刚设置的环境变量,需要打开一个新的命令窗口。

使用 setx 变量设置的变量仅在未来的命令窗口中可用,在当前命令窗口中不可用。 (Setx, Examples)

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多