根据网上的教程改良了下切换环境变量的脚本,命令行下可食~
与网上版本相比:
- 命令行下可自动提示管理员权限运行
- 自动添加%JAVA_HOME%bin

使用方法:
- 修改set JAVA_HOME部分的jdk安装路径
- 运行压缩包中的setjavaenv.bat
@echo offrem ---获取管理员权限,会弹UAC---if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0bcdedit >nulif '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin):UACPrompt%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exitexit /B:UACAdmincd /d "%~dp0"echo 已获取管理员权限echo 当前运行路径是:%CD%echo 当前使用的JDK版本:java -versionrem ---配置JDK的安装目录---:initset JAVA_HOME_8=C:/Program Files/Java/jdk1.8.0_111/set JAVA_HOME_9=C:/Program Files/Java/jdk-9.0.4/set JAVA_HOME_11=C:/Program Files/Java/jdk-11.0.5/set JAVA_HOME_14=C:/Program Files/Java/jdk-14/set RefreshEnv=%~dp0/RefreshEnv.exerem ---配置JDK的安装目录结束---echo =============================================echo 可切换jdk版本列表echo 8echo 9echo 11echo 14echo =============================================:selectset /p opt=请选择jdk版本:if %opt%==8 (set TARGET_JAVA_HOME=%JAVA_HOME_8%)if %opt%==9 (set TARGET_JAVA_HOME=%JAVA_HOME_9%)if %opt%==11 (set TARGET_JAVA_HOME=%JAVA_HOME_11%)if %opt%==14 (set TARGET_JAVA_HOME=%JAVA_HOME_14%)rem 删除现有的JAVA_HOME、classpath环境变量set home=%JAVA_HOME%if defined home (echo 删除现有的JAVA_HOME环境变量wmic ENVIRONMENT where "name='JAVA_HOME'" delete)set class=%classpath%if defined class (echo 删除现有的classpath环境变量wmic ENVIRONMENT where "name='classpath'" delete)call %~dp0/RefreshEnv.exeecho 当前选择的Java路径:%TARGET_JAVA_HOME%wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"wmic ENVIRONMENT create name="classpath",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jar"rem 如果path不存在JAVA_HOME/bin则添加wmic ENVIRONMENT where "name='path' and UserName='<system>'" get UserName,VariableValue | findstr /i "JAVA_HOME" >nul && (echo .) || (echo 添加path:%%JAVA_HOME%%binwmic ENVIRONMENT where "name='Path' and UserName='<system>'" set VariableValue="%path%;%%JAVA_HOME%%bin")rem 刷新 envcall %RefreshEnv%echo 按任意键退出!pause>nul@echo on
注意:
- setjavaenv.bat和RefreshEnv.exe放在同一目录。
- 想全局的话,建议将两个文件直接放到某个环境变量目录,命令行直接运行。
- 如果发现无法切换,可能是java安装后在C:\ProgramData\Oracle\Java目录生成了java.exe,请删除相关文件。
- 切换后当前cmd进程无法完成java版本切换,需重开cmd。
- RefreshEnv.exe的作用是在不重启情况下让环境变量生效。可用RefreshEnv.cmd代替。
参考:
https://www.cnblogs.com/Zender/p/7479717.html
http://www.cppcns.com/jiaoben/dosbat/336231.html
https://github.com/chocolatey-archive/chocolatey/blob/master/src/redirects/RefreshEnv.cmd
