吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1527|回复: 30
收起左侧

[其他原创] Windows 自动切换java版本的脚本

  [复制链接]
Force_block 发表于 2024-7-6 09:13
本帖最后由 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、代码写的不够简洁,欢迎大佬们修改

===运行图片===
1.png

===附件===
ChangeJAVA.zip (1.18 KB, 下载次数: 67)

===代码==
[PowerShell] 纯文本查看 复制代码
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

免费评分

参与人数 8吾爱币 +12 热心值 +8 收起 理由
Ocean333 + 1 + 1 谢谢@Thanks!
Axinger + 1 我很赞同!
cqxf + 1 + 1 我很赞同!
ycfxhsw + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
st0rm + 1 + 1 我很赞同!
杨辣子 + 1 + 1 谢谢@Thanks!
ysjd22 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

数流年 发表于 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
感谢楼主分享~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 19:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表