转】windows下使用批处理脚本实现多个版本的JDK切换

原博文出自于:  http://www.cnblogs.com/xdp-gacl/p/5209386.html      感谢!

一.JDK版本切换批处理脚本

  我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,这时候我们可能会在一台电脑上安装多个版本的JDK,如下图所示:

  

  当我们想要切换使用的JDK版本时,我们可以有两种做法:

  1.手动去修改JAVA_HOME环境变量,将变量的值指向对应的JDK版本的安装目录即可.

  2.通过编写批处理脚本来根据选择的JDK版本动态修改JAVA_HOME环境变量的值,这是一种偷懒的做法,这种做法需要一个RefreshEnv.exe辅助软件来刷新环境变量的值

  在网上找到了一段可以动态修改JAVA_HOME环境批处理脚本,从而实现了JDK版本的动态切换,脚本代码如下:

 1 @echo off
 2
 3 rem --- Base Config 配置JDK的安装目录 ---
 4 :init
 5 set JAVA_HOME_1_8=C:\Program Files\Java\jdk1.8.0_11
 6 set JAVA_HOME_1_7=C:\Program Files\Java\jdk1.7.0_45
 7 set JAVA_HOME_1_6=C:\Program Files\Java\jdk1.6.0_45
 8 :start
 9 echo 当前使用的JDK 版本:
10 java -version
11 echo.
12 echo =============================================
13 echo jdk版本列表
14 echo 1.8
15 echo 1.7
16 echo 1.6
17 echo =============================================
18
19 :select
20 set /p opt=请选择jdk版本:
21 if %opt%==1.8 (
22     set TARGET_JAVA_HOME=%JAVA_HOME_1_8%
23 )
24 if %opt%==1.7 (
25     set TARGET_JAVA_HOME=%JAVA_HOME_1_7%
26 )
27 if %opt%==1.6 (
28     set TARGET_JAVA_HOME=%JAVA_HOME_1_6%
29 )
30
31 echo 当前选择的Java路径:%TARGET_JAVA_HOME%
32
33 wmic ENVIRONMENT where "name=‘JAVA_HOME‘" delete
34 wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%TARGET_JAVA_HOME%"
35
36 rem -- refresh env ---
37 call RefreshEnv
38
39 echo 请按任意键退出!
40 pause>nul
41
42 @echo on

  这段批处理脚本代码是根据我们选择的JDK版本来动态修改JAVA_HOME环境变量的,然后RefreshEnv.exe来刷新环境变量的值.

二.使用方法

  将上述的批处理脚本代码保存为.bat文件,并将RefreshEnv.exe辅助软件和.bat脚本文件放到同一个目录下,如下图所示:

  

  双击.bat文件运行批处理脚本,根据提示操作即可,如下图所示:

  

  执行完成后,JAVA_HOME环境变量的值就被修改成对应的JDK版本的安装目录了

  

  

  这段批处理脚本只会修改JAVA_HOME环境变量的值,不会影响到Path变量的值,因此可以放心使用.为了方便大家使用,我把工具分享给大家,JDK版本切换工具下载

时间: 2024-10-07 08:51:33

转】windows下使用批处理脚本实现多个版本的JDK切换的相关文章

windows下注册表脚本编写

Reg文件就是我今天所说的注册表脚本文件,双击可将其中的数据写入注册表.利用注册表脚本文件可以对注册表进行关于键值的任何操作,而且还不受注册表被禁用的限制.     我们平常对注册表的修改大体上可以分为两种:     1.对注册表子键的修改;     2.对子键下的键值的修改;     下面依次对这两种修改做个简略的介绍.    一,对子键的修改(1)添加子键     操作:只需在主体文件部分加入"[ ]"即可     例如:在HKEY_CURRENT_USER/Software下添加

在windows下使用批处理启动停止服务

现在系统上运行的软件和服务是越来越多,但是内存是有限的,这就导致了计算机的速度越来越慢.作为开发者,都清楚的知道很多服务的运行是需要占用大量资源的,而且大部分服务都是默认开机启动,空闲的时候运行很浪费,每次都要去控制面板下停止服务,很繁琐,因为我就想到在windows下用批处理解决服务的启动和停止. 首先,要知道在DOS模式下哪个命令是可以用来启动和停止服务的.我用的是net.exe,简单的介绍一下net在服务启动和停止方面的使用. net start service 启动服务 net stop

FAQ系列 | 如何在windows下用bat脚本定时备份mysql

并不是所有MySQL都运行在Linux下,windows下也需要做例行备份,下面是用bat脚本做自动化备份的例子,大家可以参考下. remrem C:\Program Files\WinRAR 需要放到 path 下,才能调用rar cli工具remrem 跳转到工作目录下f:cd f:\DBBAKrem 设置变量:备份文件名SET BAK_FILE=MY_DBBAK_%date:~0,-4%.sqlrem 设置变量:日志文件名SET LOG_FILE=MY_DBBAK.logrem 记录日志e

windows下bat批处理实现守护进程(有日志)

开发部的一个核心程序总是会自己宕机,然后需要手工去起,而这个服务的安全级别又很高,只有我可以操作,搞得我晚上老没法睡,昨晚实在受不了了,想起以前在hp-ux下写的shell守护进程,这回搞个windows下的bat版守护程序吧,当时晚上思路已经很迟钝了,就叫了个兄弟让他写了,上去后运行效果不错,至少昨晚我安心睡了7小时. 早上来把程序改完善一些,增加了记录等功能. 实现: 检查是否有notepad,要用的话就算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start.bat)

windows下bat批处理实现守护进程

本文转自网络,由于找不到原作者,因而无法知道出处.如果有幸让原作者看到,请联系我加上.先转载至此. 最近几天加班加疯掉了,天天晚上没法睡.开发部的一个核心程序总是会自己宕机,然后需要手工去起,而这个服务的安全级别又很高,只有我可以操作,搞得我晚上老没法睡,昨晚实在受不了了,想起以前在hp-ux下写的shell守护进程,这回搞个windows下的bat版守护程序吧,当时晚上思路已经很迟钝了,就叫了个兄弟让他写了,上去后运行效果不错,至少昨晚我安心睡了7小时. 早上来把程序改完善一些,增加了记录等功

windows本地评测批处理脚本

在任意文件夹中放入"data.in"和"data.out"文本文件,它们分别表示输入文件和输出文件. 当然还有将被评测的代码文件"代码.cpp". 将下面的批处理代码复制进txt文件,改后缀名为.bat,放入文件夹. @echo off start /wait 获取时间.exe set t1=%errorlevel% 代码 < data.in > 代码.out start /wait 获取时间.exe set t2=%errorlev

windows下通过bat脚本和计划任务实现设置某一服务的守护进程

通常服务器上跑的服务或者应用程序比较重要,如果无意间被关闭将造成不定程度的影响.通过为比较重要的服务设置守护进程,守护服务的进程.当服务关闭时可以自动开启,方法如下: 第一步:写守护进程的bat脚本  内容如下: 脚本内容中  set_task=RDO.exe意思为检查是否有RDO.exe进程. 要用的话就改成自己的进程名,如果进程宕了就过会自动重启(会在RDO.exe进程安装目录下生成一个start.bat) 其中 start.bat脚本内容中的start 后面的参数与set_svr后面的参数

windows下部署服务脚本

1 chcp 65001 2 set home_dir=kp_home 3 set package_dir=/root/java_source 4 set config_home=anyDir 5 set resource_path=/home/Frank/openSource 6 set exchange_dir=\exchange.90km.com\exchange 7 set remote_host=192.168.80.84 8 set login_user=root 9 set rem

windows下持续ping脚本

早期监测某主机的连通性时写的脚本,里面对dos批处理中的for.变量等的使用有时会记不清,放到盘里查找不方便,于是有了这篇文章. @echo off set IP_ADDR=192.168.1.17 :repeat REM 获取系统当前日期 for /f %%i in ('date /t') do set varDate=%%i REM 获取系统当前时间 for /f %%i in ('time /t') do set varTime=%%i ping -n 1 %IP_ADDR% > null