【问题标题】:get current users path variable without system path using cmd使用cmd获取没有系统路径的当前用户路径变量
【发布时间】:2017-10-12 14:56:58
【问题描述】:

当我使用标准用户(也是管理员)登录时,echo %PATH% 命令会返回系统路径 + 用户路径。如何只获取用户的路径?

例如当我当前用户的路径是 C:\ruby;C:\java\bin 并且系统的路径是 %SystemRoot%\system32;%SystemRoot% 时,上面的命令返回 %SystemRoot%\system32;%SystemRoot%;C:\ruby;C:\java\bin 但我只想拥有 C:\ruby;C:\java\bin 以便能够在不包含系统路径垃圾的情况下永久附加到用户的路径。

我的目标是将目录附加到路径变量。我尝试使用命令setx PATH %PATH%;C:\ruby\bin 执行此操作,由于系统路径,该命令破坏了我的路径变量。

【问题讨论】:

  • 我不知道您是否可以在 Windows 上执行此操作,但您可以在 cmd 中运行 set 以查看您拥有的所有 环境变量已定义,也许您可​​以找到另一个适合您的变量。
  • 感谢您的建议,但遗憾的是没有帮助
  • 也许您可以解释接收这些值的目的是什么,并且有人可以找到解决方案。

标签: cmd environment-variables registry


【解决方案1】:

如果变量存在,因为默认情况下不存在,您可以使用注册表来获取它。

这是命令提示符下的一种方法:

For /F "Skip=2Tokens=1-2*" %A In ('Reg Query HKCU\Environment /V PATH 2^>Nul') Do @Echo %A=%C

【讨论】:

  • 如何调整以包含在批处理脚本中?
  • 很容易@DavidFoster,OP没有使用[batch-file]标签,只有[cmd]标签,所以我相应地提供了我的答案。要在批处理文件中使用它,请将其更改为:@For /F "Skip=2Tokens=1-2*" %%A In ('Reg Query HKCU\Environment /V PATH 2^>Nul') Do @Echo %%A=%%C。如果我的评论/解决方案对您有帮助,请考虑支持上述答案;谢谢。
  • 感谢@Compo 的快速回复。我找到了更多关于一个 (%) 或两个 (%%) 百分号 here 背后的原因的信息。
【解决方案2】:

使用 PowerShell 的另一种方式。

(Get-ItemProperty HKCU:\Environment).PATH

或者,从 cmd.exe shell。

powershell -NoProfile -Command "(Get-ItemProperty HKCU:\Environment).PATH"

为了在没有插值的情况下检索变量。

(Get-Item -Path HKCU:\Environment).GetValue('PATH', $null, 'DoNotExpandEnvironmentNames')

powershell -NoProfile -Command ^
    "(Get-Item -Path HKCU:\Environment).GetValue('PATH', $null, 'DoNotExpandEnvironmentNames')"

【讨论】:

  • 所以不能在cmd中原生完成?我正在尝试使用setx PATH "C:\;%PATH% 向用户PATH 添加一个文件夹,但它会将它们混合在一起;将系统路径添加到用户路径:/
  • @GandalfSaxe - 是的,powershell.exereg.exe 一样是本机可执行文件。如果您不想朝着 Microsoft 所说的未来方向前进,或者您必须支持旧的、不受支持的 Windows 版本,请使用 reg /? 了解它。
猜你喜欢
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 2020-06-28
  • 2010-12-10
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多