通过bat脚本修改环境变量并且不用重启立即生效

通过bat脚本修改环境变量并且不用重启立即生效

 系统中在C:\WINDOWS\system32下面,有一个exe文件setx.exe,通过此命令可以设置立即生效,有的系统没有此文件,需要拷贝到此目录中

@ECHO OFF 
IF EXIST %systemroot%\system32\setx.exe ( 
echo 正在配置环境变量,请稍候......

echo 下面的一段为修改注册表系统环境变量内容立即生效

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME2 /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JRE_HOME /t reg_sz /d "%~dp0jdk-1.6\jre" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Tomcat_Home /t reg_sz /d "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" /f

echo 下面的一段为修改注册表用户对应环境变量内容立即生效

reg add "HKCU\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKCU\Environment" /v JAVA_HOME2 /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKCU\Environment" /v JRE_HOME /t reg_sz /d "%~dp0jdk-1.6\jre" /f
reg add "HKCU\Environment" /v Tomcat_Home /t reg_sz /d "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" /f
reg add "HKCU\Environment" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" /f
reg add "HKCU\Environment" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" /f

 

echo 下面的一段为用setx命令修改环境变量,此操作完成后,在我的电脑-属性-高级-环境变量里面会发生改变,在cmd里面用echo %java_home%查看,也会发生改变

setx JAVA_HOME "%~dp0jdk-1.6" -m
setx JAVA_HOME2 "%~dp0jdk-1.6" -m
setx JRE_HOME "%~dp0jdk-1.6\jre" -m
setx Tomcat_Home "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" -m
setx ClassPath ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" -m
setx Path "%systemroot%;%systemroot%\system32;%systemroot%\system32\wbem;%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" -m


@ECHO Java环境变量设置成功 
) ELSE ( 
@ECHO ON 
@ECHO 未能找到%systemroot%\system32\setx.exe,安装setx.exe 
@copy "%~dp0\setx.exe" %SystemRoot%\system32 /y

echo 正在配置环境变量,请稍候......

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME2 /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JRE_HOME /t reg_sz /d "%~dp0jdk-1.6\jre" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Tomcat_Home /t reg_sz /d "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" /f

reg add "HKCU\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKCU\Environment" /v JAVA_HOME2 /t reg_sz /d "%~dp0jdk-1.6" /f
reg add "HKCU\Environment" /v JRE_HOME /t reg_sz /d "%~dp0jdk-1.6\jre" /f
reg add "HKCU\Environment" /v Tomcat_Home /t reg_sz /d "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" /f
reg add "HKCU\Environment" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" /f
reg add "HKCU\Environment" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" /f

setx JAVA_HOME "%~dp0jdk-1.6" -m
setx JAVA_HOME2 "%~dp0jdk-1.6" -m
setx JRE_HOME "%~dp0jdk-1.6\jre" -m
setx Tomcat_Home "%~dp0apache-tomcat-1;%~dp0apache-tomcat-2" -m
setx ClassPath ".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar" -m
setx Path "%systemroot%;%systemroot%\system32;%systemroot%\system32\wbem;%%JAVA_HOME%%\bin;%%Tomcat_Home%%\bin;" -m


@ECHO Java环境变量设置成功 


@PAUSE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 操作系统中,修改环境变量后需要重新打开命令行窗口或者重新启动计算机才能使修改生效。如果想要在不重启计算机或者重新打开命令行窗口的情况下立即生效,可以使用以下方法: 1. 在 bat 脚本中使用 `setx` 命令修改环境变量,并且在修改后使用 `set` 命令强制更新当前窗口的环境变量,示例代码如下: ``` setx PATH "%PATH%;C:\NewFolder" /M set PATH=%PATH% ``` 其中,`setx` 命令用于修改系统环境变量 PATH,`/M` 参数表示修改的是系统级别的环境变量。`set` 命令用于强制更新当前窗口的环境变量,将新的环境变量值同步到当前窗口的进程中。 2. 在 bat 脚本中使用 `setx` 命令修改环境变量后,使用 `SendMessage` API 发送消息给 Windows Explorer 进程,通知它更新环境变量。示例代码如下: ``` setx PATH "%PATH%;C:\NewFolder" /M setlocal EnableDelayedExpansion set "msg=!WM_SETTINGCHANGE!" set "explorer=%SystemRoot%\explorer.exe" set "param=/select,explorer.exe" set "param=!param:\=\\!" set "param=!param:,=\,! /e,!param:~0,-1!!" if defined PROCESSOR_ARCHITEW6432 ( set "pids=" for /f "usebackq tokens=2 delims==;" %%i in (`tasklist /fi "imagename eq explorer.exe" /fi "memusage gt 50000" /fo list /v`) do ( set "pids=!pids! %%i" ) if defined pids ( echo ^<%time%^> Killing processes !pids:~1! to force Explorer restart... taskkill /pid !pids:~1! /f >nul 2>&1 ) ) else ( for /f "usebackq tokens=2 delims==;" %%i in (`tasklist /fi "imagename eq explorer.exe" /fi "memusage gt 25000" /fo list /v`) do ( set "explorer=%%i" ) ) echo ^<%time%^> Spawning Explorer process %explorer% %param%... start "" "%explorer%" %param% endlocal ``` 其中,`setx` 命令用于修改系统环境变量 PATH,`/M` 参数表示修改的是系统级别的环境变量。`SendMessage` API 用于向 Windows Explorer 进程发送消息,通知它更新环境变量。在代码中,使用了一些技巧来找到 Windows Explorer 进程的 PID,并且使用 `taskkill` 命令杀掉这些进程,然后使用 `start` 命令启动一个新的 Windows Explorer 进程,并且带上指定的参数。这样就可以在不重启计算机或者重新打开命令行窗口的情况下立即生效修改环境变量

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值