如何从命令行附加到用户 %PATH%

now*_*wox 3 windows batch environment-variables

我在 StackExchange 上发现了很多这样的问题,但没有一个在我的具体情况下有效。

我想轻松地将 %FOO% 添加到用户环境变量 PATH。

我在下面找到了解决方案。不幸的是,它没有按预期工作。

for /f "skip=2 tokens=3*" %a in ('reg query HKCU\Environment /v PATH') do @if [%b]==[] ( @setx PATH "%~a;%FOO%" ) else ( @setx PATH "%~a %~b;%FOO%" )
Run Code Online (Sandbox Code Playgroud)

如果出现以下情况则不起作用:

  • 用户 PATH 变量不存在
  • 用户 PATH 存在且为空
  • 用户 PATH 几乎有 255 个字符长。

此外,它不会从字面上添加 %FOO% 而是扩展它。

有没有可能轻松做到?

agt*_*ver 6

这取决于您要尝试做什么:

  • 要更新,您目前的命令行会话中的路径,使用: set PATH=%PATH%;%FOO%
  • 要仅为当前用户编辑它,请使用:setx PATH "%PATH%;%FOO%"。请注意,此更改在您当前的命令行会话中不可见;你需要启动一个新的命令行。
  • 要为机器上的所有用户编辑它,请使用:setx /M PATH "%PATH%;%FOO%"

您可以通过ECHO %PATH%在命令行中键入或在 Windows 环境设置中检查来查看路径。

此外,在 Windows 7 和 8 中,最大环境变量字符串大小为 32,767 个字符。尽管这对 PATH 变量也有效,但命令控制台中的命令最大长度为 8191 个字符,因此在命令行命令中使用 PATH 变量时需要考虑到这一点。无论如何,您现在拥有的 256 个字符上方还有更多的空间。