【批处理】通过批处理修改环境变量

时间:2022-12-12 09:32:57

通过批处理修改环境变量,我知道的有两种方法。

  • 通过setx path 这种方法去修改。
    不过我在使用时发现一些问题,比如当环境变量和用户变量里都有path的时候,读取path就会将两个里的path都读取出来,修改的时候也是这样。通过批处理去修改的时候还要牵扯到权限问题,必须要使用超级管理员权限,不方便给其他不熟悉电脑的人使用。如果需要在mfc中调用该bat,会发现echo出来的并不是我们想要的,应该也是牵扯到了权限的缘故。所以我果断不使用这种方法了。

  • 通过批处理调用注册表来修改环境变量。

::写入环境变量
@echo off
echo Windows Registry Editor Version 5.00>re.reg
echo [HKEY_CURRENT_USER\Environment]>>re.reg
echo "path" = "%p%">>re.reg
echo "include" = "%inc%">>re.reg
echo "lib" = "%li%">>re.reg
start re.reg

我写入的是path,include和lib三个路径
打开注册表regedit

    HKEY_CURRENT_USER\Environment  //用户环境变量
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment//系统环境变量

搜索,就会在右侧表里找到我们添加的环境变量。

获取当前环境变量

@echo off
::获取当前环境变量
for /f "tokens=1,2,* " %%i in ('REG QUERY "HKEY_CURRENT_USER\Environment" ^| find /i "path"') do echo %%k
pause

凡是对于注册表的操作我们都可以写入*.reg文件中,然后运行就可以了,是十分的方便。