从命令行列出所有环境变量

1165

如何在 Windows 命令提示符中列出 所有 环境变量?

类似于 PowerShell 的 gci env:(或者 ls env: 或者 dir env:)的功能。


2
有关每个变量的描述,请参见https://ss64.com/nt/syntax-variables.html。 - Samuel Harmer
9个回答

1629

只需执行:

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

27
这让我想起一个名字? - CMCDragonkai
58
Windows shell中的所有命令都是不区分大小写的。 - Jon
14
你正在使用PowerShell吗?看起来它已经劫持了"set"命令并与其中一个其命令相关联。这是它的一项不太有用的功能!我在这里提出了一个有关如何禁用它的问题。链接为:https://dev59.com/HXzaa4cB1Zd3GeqPOVLA - JonnyRaa
4
有人能否更新一下,包括一个PowerShell解决方案?毕竟它是未来的趋势。对吗? - Bruno Bronosky
1
这并不保证可行。这需要启用命令扩展。在较新的Windows上,默认情况下启用了它们,但在较旧的Windows上可能未启用,并且可以关闭。 - John Lord
显示剩余5条评论

212

Jon已经给出了正确答案,但为了更加生动形象,请让我用一些语法糖进行解释。

SET | more

让你能够一页一页地查看变量,而不是一下子全部查看。

SET > output.txt

将输出发送到名为output.txt的文件中,您可以在记事本或其他程序中打开该文件。


它实际上也内置在一些函数中。例如,Dir函数会使用 /p 进行分页。 - John Lord

167

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

Get-ChildItem Env:

或者,如用户797717建议的那样,为避免输出被截断:

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

来源:创建和修改环境变量Windows PowerShell每周提示


4
即使有些命令不支持PowerShell,但为了实现漂亮的打印效果(在两列中),这仍然是唯一不需要太大努力的解决方案。要在命令提示符中实现相同的效果,你需要使用类似于 for /f "tokens=1,2 delims==" ... 的命令,但这会变得非常复杂... - ROMANIA_engineer
6
为了避免输出被截断,我建议使用以下命令: Get-ChildItem Env: | Format-Table -Wrap -AutoSize - user797717
5
使用gci env:代替Get-ChildItem Env:,更易于记忆。 - mati kepa

89

只需在cmd中运行set即可。

显示、设置或删除环境变量。如果没有参数使用,set会显示当前的环境设置。


1
这些天好像不起作用了(在2021年)` $ set$ cmdlet Set-Variable 在命令管道位置1 $ 为以下参数提供值: $ Name[0]: $ Set-Variable: 无法将参数“Name”绑定到参数,因为它是一个空数组。 ` - Jay Killeen
3
set 命令在 cmd 中运行,而不是 Powershell @JayKilleen - Alistair Knock

23

单独使用 set 无法在 Github Actions 中工作,但是 reg query 可以! - Nick

14

您可以在cmd中使用SET

只需运行SET即可查看当前变量。

要查看特定的变量,例如“PATH”,请使用SET PATH

需要帮助,请输入set /?


3
这与现有的答案有何不同? - Peter Mortensen

11

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

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
6
为什么你说“不要浪费时间”?在命令提示符中编写“set”比“reg query…”更快,不是吗? - Alexandre Huat

9

如其他回答中所提到的,您可以使用 set 命令列出所有环境变量,或者使用 set [environment_variable] 命令获取特定变量及其值。

使用 set [environment_variable]= 命令可以从工作区中删除一个变量。


1
是的,但这怎么回答问题呢? - Peter Mortensen

5

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

使用setx设置的变量仅在以后的命令行窗口中可用,而不在当前命令行窗口中。(Setx,示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接