演示效果
脚本内容
@echo off
set Java =C:InstallationsJava
rem “echo=”是换行
echo=
if "%1"=="" (
echo Usage:
echo=
echo jvm using show the java version in use
echo jvm list show all version
echo jvm use ^<version^> switch version
echo=
) else if "%1"=="use" (
if "%2"=="" (
echo Missing version parameters
) else (
rem enabledelayedexpansion开始变量延迟,不开启的话会在变量重新赋值的时候只能获取到上次的结果
setlocal enabledelayedexpansion
set result= false
for /f %%i in ('dir /b %java% jdk ') do (
if "%%i"=="%2" set result=true
)
rem 使用! var !开始变量延迟
if !result!==true (
if exist %java% current (rd /s/q %java%current)
mklink /J %java%current %java%jdk"%2"
) else echo Current version is not exist
rem 开启变量延迟会把!!过滤掉,所以不需要延迟就把变量延迟关闭disabledelayedexpansion
setlocal disabledelayedexpansion
)
) else if "%1"=="list" (
dir /B %java%jdk
) else if "%1"=="using" (
java --version
) else echo Syntax error
使用方法
- 指定一个path目录作为根目录,然后将path/current(current是固定的,不要改变,除非你修改脚本)配置成JAVA_HOME(我指定的path是C:InstallationsJava)
- 配置 环境变量 ,在系统或者用户的path后添加%JAVA_HOME%bin
- 在path目录下新建一个jdk的目录,将下载的jdk解压至jdk目录下,解压的jdk可以重名成jdk的版本号(如v11、11这样的字样,这个很重要,在使用命令切换版本的时候需要输入这个重命名的名称)
- 新建一个名称为 jvm .bat的文件,将文章开始的bat脚本内容复制到jvm.bat中,将set java的值改成你本地的path,并将jvm. bat文件 放在已经配置了环境变量的目录下,为了在 cmd 中的任意目录下都可以调用,如果新建好不能调用jvm命令,可以重启电脑后再去调用jvm
目录结构
// 只显示了当前目录的2层目录
C:INSTALLATIONSJAVA
├─jdk
├─v11
│ ├─bin
│ ├─conf
│ ├─ include
│ ├─jmods
│ ├─legal
│ └─lib
└─v15
├─bin
├─conf
├─include
├─jmods
├─legal
└─lib