最近在配置C++的环境时遇到了需要添加系统环境Path的问题,发现通常的解决方案并不高效。
如果你也在使用windows操作系统的过程中,需要频繁添加过系统环境Path,那么本文可能会为你提供一种可能的高效解决方案。
存在的问题
不必多说,下面这种通过打开设置窗口添加的方式大家都经历过。
图片来源:
有没有一种方式可以便捷地一键添加系统环境Path?
解决方案一
答案是肯定的。Windows在cmd中有SET和SETX两个命令用于修改变量值。
于是就有了一种方案:
setx /M PATH "%PATH%;NEW_PATH"
然而,尝试过后,你会发现只有当前会话的PATH变量被修改了,而在系统设置中并没有成功添加。原来,set命令只作用于当前会话变量,并不能修改系统配置。
那么要如何才能永久添加系统环境Path呢?
解决方案二
方法就是从源头上处理,直接修改注册表!
系统环境的Path实际上是windows操作系统的注册表中的一个键
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
的其中一个变量Path的值。
那么通过编写一个批处理的脚本实现注册表的修改即可高效地完成添加系统环境Path的操作。
步骤一
添加一个yourname.bat文件,内容为
@ECHO OFF
REM 此脚本用于添加系统环境变量,操作需谨慎!
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
SET NewPath=%~1
REM 备份原Path
FOR /F "tokens=2*" %%A IN ('REG QUERY %Key% /v Path') DO SET Path_copy=%%B
REG ADD %Key% /v PATH_COPIED /t REG_SZ /d "%Path_copy%"
ECHO Path变量已经复制到 %Key%:PATH_COPIED=
REG QUERY %Key% /v PATH_COPIED
REM 添加路径
REG ADD %Key% /v Path /t REG_SZ /d "%Path_copy%%NewPath%;"
ECHO Path 变量已替换为:
REG QUERY %Key% /v Path
步骤二
在yourname.bat同一路径下以管理员身份运行cmd(参考http://t.csdnimg.cn/71Lsl),执行
yourname.bat "要添加的路径"
注意事项
通过修改注册表实现Path的添加是一种危险的行为,可能导致原有Path的丢失,脚本已通过备份降低安全风险。