我正在寻找一种从命令行添加和/或修改和/或删除环境变量的便捷方法。特别是,我有时会发现自己需要在cmd.exe中添加一些变量。
如果有人向我展示了一种非GUI方式进行修改(即:添加新目录),我将不胜感激 %PATH%
变量。
这种变化应该是永久性的,而不仅仅是持续时间 cmd
会话。
我正在寻找一种从命令行添加和/或修改和/或删除环境变量的便捷方法。特别是,我有时会发现自己需要在cmd.exe中添加一些变量。
如果有人向我展示了一种非GUI方式进行修改(即:添加新目录),我将不胜感激 %PATH%
变量。
这种变化应该是永久性的,而不仅仅是持续时间 cmd
会话。
Answers:
使用reg命令直接操作注册表变量的Old School方法就是钱。这是你如何做到的:
reg add HKCU\Environment /v PATH /d "%addonpath%;%path%" /f
把它扔进一个名为apath.bat的单行脚本中,如下所示:
@echo off
reg add HKCU\Environment /v PATH /d "%~dp0;%path%" /f
然后,您需要提供的是您在调用脚本时添加的新目录的路径,并且您已拨入:
例如:apathy.bar%addon path%
虽然欣奇是对的。如果您使用Vista或更高版本,最好的方法是使用SETX命令,该命令旨在允许我们传播环境变量,而不会有使用reg命令直接操作注册表的风险,如果命令可以保存您的机器,你操纵ENV变量足以在飞行中使用它。
你可以使用setx。
用户变量:
SETX PATH "%PATH%;C:\MyDir"
系统变量:
SETX PATH "%PATH%;C:\MyDir" /M
echo %PATH%
,你看到它们结合在一起,就像 <system path>;<user path>
。因此,第一个命令将强制系统路径的当前项出现在用户路径中(这不是那么糟糕),而第二个命令将导致用户路径的当前项出现在系统路径中(这是不可接受的)。
你可以使用 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun
注册表项指向批处理文件,允许您进行半永久性更改而无需深入研究神秘的设置对话框。
如果您不想使用GUI(如在控制面板,系统,高级,环境变量,PATH中),您可以使用 REG
设置 HKCU\Environment\PATH
。
%PATH%
REG ADD HKCU\Environment /v PATH /t REG\_EXPAND\_SZ /d "%PATH%" /f
该 /f
强制覆盖现有值,这样您就不必以交互方式回答问题。
编辑: %PATH%
需要引用。
编辑: 值得注意的是,这可能需要重启或重新登录才能生效。虽然在GUI中更改它会立即生效(对于新的 cmd.exe
会话)。
参考: http://support.microsoft.com/kb/104011
如参考文献中所述,如果您想编写一些代码,可以发送WM_SETTINGCHANGE,这应该避免登录/注销要求。
REG QUERY HKCU\Environment /v PATH
。
在当前cmd.exe进程中更改路径很容易:
PATH c:\MyNewDirectory;%PATH%
您可以随时通过HELP PATH获取有关PATH命令的帮助。
对于真正永久的系统范围更改,您确实需要使用系统控制面板(也称为我的电脑 - &gt;属性 - >高级 - >环境变量,用于WinXP)。那里的设置会影响整个系统,包括Explorer shell中的GUI程序。
如果您只需要这些更改 cmd.exe
shell,您可以运行批处理文件,在启动cmd.exe窗口时设置它们。 Phoshi的回答 提到了 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun
,这似乎是一个很好的选择 - 很容易进行小的更改,并在需要时从命令行重新运行。但这不会影响GUI窗口或Explorer shell。
我真的很惊讶 Sysinternals的 没有一个有用的实用程序来做到这一点。也许另一个 PStools 可以做到?
很多方法都是这样做的。 REG ADD是一个或REG IMPORT(使用另一台计算机中导出的.REG文件)。 SETX / M是另一个。您也可以使用组策略首选项(对于大量计算机来说最轻松的方式)将其推出
这里没有提到的另一个想法,创建一个autohotkey脚本,它将启动控制面板并为您输入。如果您已经是AHK用户,它会很好用:-)
https://autohotkey.com/board/topic/63210-modify-system-path-gui/
还有什么关于编辑hklm / system / currentcontrolset001 / control / session manager / environment:path key?但是同样的密钥在hklm / system / currentcontrolset002和hklm / system / currentcontrolset下。看来这可能是正确的,在这里: https://stackoverflow.com/questions/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install