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

Nic*_*ssu 885 windows command-line prompt environment-variables

我想知道是否可以从Windows的命令提示符列出所有环境变量.

相当于PowerShell gci env:(或ls env:dir env:)的东西.

Jon*_*Jon 1296

做就是了:

SET
Run Code Online (Sandbox Code Playgroud)

您还SET prefix可以查看名称以?开头的所有变量prefix.

例如,如果您只想从环境变量中读取derbydb,请执行以下操作:

set derby 
Run Code Online (Sandbox Code Playgroud)

......你会得到以下信息:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Run Code Online (Sandbox Code Playgroud)

  • @KevinMeredith:Windows shell中的所有命令都不区分大小写. (52认同)
  • @CMCDragonkai你使用的是powershell吗?似乎它已经使用其中一个命令设置了hikacked set.这是它不太有用的功能之一!我问了一个关于禁用此问题的问题[这里](http://stackoverflow.com/questions/21678521/is-it-possible-to-how-do-you-stop-powershell-using-certain-cmdlets) (12认同)
  • 这提醒我一个名字? (6认同)
  • @NickTimmer,因为您是在谈论bash而不是Windows Shell,所以这对您来说是错误的问题/答案。看一下`printenv`。 (3认同)
  • 有人可以更新它以包含PowerShell解决方案吗?它应该是未来和所有。对? (2认同)

Fet*_*che 160

乔恩有正确的答案,但要用一些语法糖来详细说明..

SET | more
Run Code Online (Sandbox Code Playgroud)

使您能够一次查看一个页面的变量,而不是整个页面,或者

SET > output.txt
Run Code Online (Sandbox Code Playgroud)

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

  • +1输出到文件对于像路径这样的长文件非常有用 (13认同)
  • 我不知道在Windows上存在"更多",+1 (7认同)

use*_*778 92

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

Get-ChildItem Env:
Run Code Online (Sandbox Code Playgroud)

资料来源:https://technet.microsoft.com/en-us/library/ff730964.aspx

  • 为了避免输出被截断,我将使用以下内容:`Get-ChildItem Env:| Format-Table -Wrap -AutoSize` (6认同)
  • 即使我不使用PowerShell,因为它不适用于每个cmd命令,这是一个非常好的打印(在2列上)的唯一解决方案.要在cmd中实现相同的行为,你需要这样的东西`for/f"tokens = 1,2 delims =="...`这变得非常复杂...... (4认同)
  • `gci env:` 代替 `Get-ChildItem Env:`,更容易记住 (2认同)

Gra*_*mas 78

简单地setcmd.

显示,设置或删除环境变量.如果不使用参数,set将显示当前的环境设置.

  • set 在 cmd 中运行,而不是 Powershell @JayKilleen (3认同)

Hri*_*dam 24

非扩展变量 -

用户变量 -

reg query HKEY_CURRENT_USER\Environment
Run Code Online (Sandbox Code Playgroud)

系统变量 -

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Run Code Online (Sandbox Code Playgroud)

扩展变量 -

在命令中 -

SET
Run Code Online (Sandbox Code Playgroud)

在 Powershell 中 -

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

SET
Run Code Online (Sandbox Code Playgroud)


小智 12

你可以SET在cmd中使用

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

要显示某些变量,例如"PATH",请使用SET PATH.

如需帮助,请输入set /?.

  • 这与现有答案有何不同? (3认同)

Abh*_*jar 6

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

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

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

  • 是的,但是这如何回答这个问题呢? (2认同)

cap*_*get 5

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

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


小智 5

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

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Run Code Online (Sandbox Code Playgroud)

返回小于SET命令的值。

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