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


931

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

等同于PowerShell的gci env:(ls env:或dir env:)。


1
有人可以共享PowerShell解决方案吗?它应该是未来和所有。对?
— 布鲁诺·布鲁诺斯基

1
@BrunoBronosky PS解决方案已包含在问题中,并且还有一个重复的答案=)
— Jon

有关每一项的说明,请参见ss64.com/nt/syntax-variables.html
— Samuel Harmer

Answers:


1351

做就是了:

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 2013年

53
@KevinMeredith:Windows Shell中的所有命令都不区分大小写。
— 2013年

12
@CMCDragonkai您在使用Powershell吗?似乎它已使用其命令之一来设置集。这是它不太有用的功能之一!我问了一个有关在此处
— JonnyRaa 2014年

2
有人可以更新它以包含PowerShell解决方案吗?它应该是未来和所有。对?
— 布鲁诺·布鲁诺斯基

3
@NickTimmer,因为您是在谈论bash而不是Windows Shell,所以这对您来说是错误的问题/答案。看看printenv。
— 乔恩

167

乔恩(Jon)的答案是正确的,但要使用语法语法进行详细说明。

SET | more

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

SET > output.txt

将输出发送到文件output.txt,您可以在记事本中打开文件或其他任何文件...


7
我不知道more在Windows上存在+1
— ardnew的消息

它实际上也内置在某些功能中。例如,Dir的页面将带有/ p。
— 约翰·罗德

@ardnew:现在您知道更多了;-)
— user2943111

106

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

Get-ChildItem Env:

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

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

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


4
即使我不使用PowerShell,因为它不适用于每个cmd命令,这也是不费吹灰之力即可漂亮打印(两列)的唯一解决方案。为了在cmd中实现相同的行为,您需要像这样的东西for /f "tokens=1,2 delims==" ...,它变得非常复杂...
— ROMANIA_engineer

6
为了避免输出被截断,我将使用以下内容:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
— user797717 '17

1
gci env:相反Get-ChildItem Env:,更容易记住
— Matson Kepson

完善!我不明白为什么这不是坦白的回答:/编辑:哦,等等,我明白了为什么……最初的问题不是关于如何在Powershell中进行操作,而是在老派中指令提示:D
— Yoeri Van Nieuwerburg

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 ...”快吗?
— Alexandre Huat

4

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

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


4

如其他答案所述,您可以使用set列出所有环境变量或使用

set [environment_variable] 获得具有其值的特定变量。

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


1
是的,但这如何回答问题?
— 彼得·莫滕森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.