Windows 自动切换java版本的脚本
本帖最后由 Force_block 于 2024-7-8 12:56 编辑===Linux版===
Linux自动切换的在这里:
kali Linux 自动切换java版本的脚本
https://www.52pojie.cn/thread-1940942-1-1.html
===使用说明===
1、运行后会先显示当前的JAVA版本
2、输入你想切换的版本对应的序号就可以切换了
===设置说明===
1、记得修改自己的JAVA目录,如果是默认安装位置的话就不需要改
2、配置环境变量
(1)删除本机之前配置的所有和java有关的变量
(2)JAVA_HOME:
在“环境变量”窗口中,点击“新建”以添加新的用户变量。
变量名为JAVA_HOME,变量值为你的默认Java安装路径,例如:C:\Program Files\Java\jdk-XX(确保这个目录存在)。
点击“确定”。
(2)配置PATH:
在“环境变量”窗口的“用户变量”部分,找到并选择Path,然后点击“编辑”。
在“编辑环境变量”窗口中,点击“新建”,然后输入%JAVA_HOME%\bin。
确保将其放在Path变量列表的前面,这样可以优先使用你配置的Java版本。
点击“确定”。
3、更改版本后新建power shell输入java -version可以再次查看当前版本
===代码===
1、运行后会扫描当前安装路径下存在的Java版本,因此一定要先设置自己的安装路径
2、针对Java8版本的提示做了特殊的格式化显示,因为Java8的路径是jdk-1.8开头,别的版本没做
3、代码写的不够简洁,欢迎大佬们修改
===运行图片===
===附件===
===代码==
chcp 65001
@echo off
setlocal enabledelayedexpansion
:: 输出当前Java版本
echo 当前的JAVA版本是:
java -version
echo.
:: Java安装目录
set "JAVA_DIR=C:\Program Files\Java"
:: 临时文件用于存储Java路径
set "JAVA_VERSIONS_FILE=%temp%\java_versions.txt"
:: 清空临时文件
if exist "%JAVA_VERSIONS_FILE%" del "%JAVA_VERSIONS_FILE%"
:: 扫描Java目录下的所有jdk文件夹
for /d %%D in ("%JAVA_DIR%\jdk*") do (
set "JAVA_PATH=%%D"
echo !JAVA_PATH! >> "%JAVA_VERSIONS_FILE%"
)
:: 检查是否找到了任何Java版本
if not exist "%JAVA_VERSIONS_FILE%" (
echo No JDK versions found in %JAVA_DIR%.
pause
goto :eof
)
:: 显示找到的Java版本
echo 以下是当前计算机中存在的JAVA(jdk)版本:
set /a index=1
for /f "tokens=*" %%A in (%JAVA_VERSIONS_FILE%) do (
set "JAVA_VERSION_PATH[!index!]=%%A"
:: 提取Java版本信息
set "JAVA_FOLDER=%%~nxA"
:: 格式化Java版本信息
if "!JAVA_FOLDER:~0,3!"=="jdk" (
set "JAVA_VERSION=!JAVA_FOLDER:~3!"
if "!JAVA_VERSION:~0,1!"=="-" (
set "JAVA_DISPLAY=JAVA!JAVA_VERSION:-=-!"
) else if "!JAVA_VERSION:~0,4!"=="1.8." (
for /f "tokens=2 delims=_" %%B in ("!JAVA_VERSION!") do (
set "JAVA_VERSION_MINOR=%%B"
)
set "JAVA_DISPLAY=JAVA-8-!JAVA_VERSION_MINOR!"
) else (
for /f "tokens=1,2 delims=_" %%B in ("!JAVA_VERSION!") do (
set "JAVA_VERSION_MAJOR=%%B"
set "JAVA_VERSION_MINOR=%%C"
)
set "JAVA_DISPLAY=JAVA-!JAVA_VERSION_MAJOR:~0,1!-!JAVA_VERSION_MINOR!"
)
)
:: 计算输出的格式宽度
set "JAVA_DISPLAY_FORMATTED=!JAVA_DISPLAY!"
for /L %%i in (1,1,20) do (
if "!JAVA_DISPLAY_FORMATTED:~20,1!"=="" set "JAVA_DISPLAY_FORMATTED=!JAVA_DISPLAY_FORMATTED! "
)
echo !index!. !JAVA_DISPLAY_FORMATTED! - %%A
set /a index+=1
)
:: 提示用户选择Java版本
set /p version=请输入需要切换的JAVA版本序号:
:: 检查用户输入是否合法
if "%JAVA_VERSION_PATH[%version%]%"=="" (
echo Invalid choice
pause
goto :eof
)
:: 设置JAVA_HOME和PATH
for %%v in (%version%) do (
set "CHOSEN_JAVA_PATH=!JAVA_VERSION_PATH[%%v]!"
set "CHOSEN_JAVA_PATH=!CHOSEN_JAVA_PATH:~0,-1!"
)
setx JAVA_HOME "%CHOSEN_JAVA_PATH%"
setx PATH "%CHOSEN_JAVA_PATH%\bin;%PATH%"
:: 输出当前Java版本
echo 切换成功!
:: 保持窗口打开
pause
我是win7 的环境运行一直提示说无法写入设备
Active code page:
65001
write to the specified devicehe system cannotlava version“1.7.0 80"Java(TH)SE Runtime Environment(build 1.7.0 80-b15)Java HotSpot(TM)64-Bit Server yM(build 24.80-b11, mixed mode)
The auatem sannot write to the specified deviceCNProgram FitesWavaNjdk1:9:8 $JAVA-1-80
SUCCESS:Specified yalue was saved
WARNING: The data being saved is truncated to 1024 characters
SUCCESS:Specified value was saved.The system cannot write to the specified devicePress any key to continue
java7路径:C:\Program Files\Java\jdk1.7.0_80
java6路径:C:\Program Files\Java\jdk1.6.0_45
JAVA_HOME:C:\Program Files\Java\jdk1.7.0_80
这是什么原因啊。 本帖最后由 oudaidai 于 2024-7-6 09:26 编辑
楼主可以了解一下Windows下的包管理器Scoop,也能实现你需要的功能,参考:www.cnblogs.com/fortuneju/p/14701121.html 非常好啊。前阵子折腾打包环境,java换来换去。。。。要是有这个工具不就方便了 谢谢,这个很好 可以不错的 感谢分享,搞软件的比较有用 感谢楼主分享 有着工具方便多了! 收藏起来了。 感谢楼主分享~