Force_block 发表于 2024-7-6 09:13

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

数流年 发表于 2024-11-3 19:57

我是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:18

本帖最后由 oudaidai 于 2024-7-6 09:26 编辑

楼主可以了解一下Windows下的包管理器Scoop,也能实现你需要的功能,参考:www.cnblogs.com/fortuneju/p/14701121.html

ysjd22 发表于 2024-7-6 10:24

非常好啊。前阵子折腾打包环境,java换来换去。。。。要是有这个工具不就方便了

happybit 发表于 2024-7-6 10:26

谢谢,这个很好

langniao 发表于 2024-7-6 10:30

可以不错的

andyle 发表于 2024-7-6 10:37

感谢分享,搞软件的比较有用

Tsirius 发表于 2024-7-6 11:27

感谢楼主分享

wshuangh888 发表于 2024-7-6 12:01

有着工具方便多了!

long88888888 发表于 2024-7-6 12:10

收藏起来了。

ACGZOOM 发表于 2024-7-6 12:13

感谢楼主分享~
页: [1] 2 3 4
查看完整版本: Windows 自动切换java版本的脚本