永发信息网

如何写一个切换jdk版本的bat脚本

答案:2  悬赏:10  手机版
解决时间 2021-02-14 08:53
如何写一个切换jdk版本的bat脚本
最佳答案
SetX有三种使用方式:
语法1:
SETX[/Ssystem[/U[domain/]user[/P[password]]]]varvalue[/M]
语法2:
SETX[/Ssystem[/U[domain/]user[/P[password]]]]var/Kregpath[/M]
语法3:
SETX[/Ssystem[/U[domain/]user[/P[password]]]]
/Ffile{var{/Ax,y|/Rx,ystring}[/M]|/X}[/Ddelimiters]
描述:
在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输
入设置变量。
参数列表:
/Ssystem指定要连接到的远程系统。
/U[domain/]user指定应该在哪个用户上下文执行命令。
/P[password]指定给定用户上下文的密码。如果省略则
提示输入。
var指定要设置的环境变量。
value指定分配给环境变量的值。
/Kregpath指定变量是基于注册表项的信息而设置的。
路径的格式应该是hive/key/.../value。例如
HKEY_LOCAL_MACHINE/System/CurrentControlSet/
Control/TimeZoneInformation/StandardName。
/Ffile指定要使用的文本文件的文件名。
/Ax,y指定绝对文件坐标(线X,项目Y)作为在此文件
里搜索的参数。
/Rx,ystring指定有关“字符串”作为搜索参数的相对文件坐标。
/M指定应该在系统(HKEY_LOCAL_MACHINE)环境中设
置此变量。在HKEY_CURRENT_USER环境下,默认
将设置此变量。
/X用x,y坐标显示文件内容。
/Ddelimiters指定其他限定符,如","或"/"。
内置分隔符是空格、制表符、回车和换行符。所有
ASCII字符都可作为限定符。限定符的最大数量,
包括内置分隔符,是15。
/?显示此帮助消息。
注意:1)SETX在注册表中将变量写入主机环境。
2)在本地系统,用此工具创建或修改的变量将在以后的命令窗口可用,但
在当前的CMD.exe命令窗口。
3)在远程系统,用此工具创建或修改的变量在下次登录会话可用。
4)有效的注册表项数据类型是REG_DWORD,REG_EXPAND_SZ,REG_SZ
和REG_MULTI_SZ。
5)受支持的配置单元:HKEY_LOCAL_MACHINE(HKLM),
HKEY_CURRENT_USER(HKCU)。
6)限定符区分大小写。
7)REG_DWORD的值是从注册表里以十进制格式提取出来的。
示例:
SETXMACHINECOMPAQ
SETXMACHINE"COMPAQCOMPUTER"/M
SETXMYPATH"%PATH%"
SETXMYPATH~PATH~
SETX/Ssystem/Uuser/PpasswordMACHINECOMPAQ
SETX/Ssystem/Uuser/PpasswordMYPATH^%PATH^%
SETXTZONE/KHKEY_LOCAL_MACHINE/System/CurrentControlSet/
Control/TimeZoneInformation/StandardName
SETXBUILD/K"HKEY_LOCAL_MACHINE/Software/Microsoft/Windows
NT/CurrentVersion/CurrentBuildNumber"/M
SETX/Ssystem/Uuser/PpasswordTZONE/KHKEY_LOCAL_MACHINE/
System/CurrentControlSet/Control/TimeZoneInformation/
StandardName
SETX/Ssystem/Uuser/PpasswordBUILD/K
"HKEY_LOCAL_MACHINE/Software/Microsoft/WindowsNT/
CurrentVersion/CurrentBuildNumber"/M
SETX/Fipconfig.out/X
SETXIPADDR/Fipconfig.out/A5,11
SETXOCTET1/Fipconfig.out/A5,3/D"#$*."
SETXIPGATEWAY/Fipconfig.out/R0,7Gateway
SETX/Ssystem/Uuser/Ppassword/Fc:/ipconfig.out/X

虽然是很长的一段,不过关键信息就是可以用SETX来设置系统变量。通过以下的这条命令,我们可以对JAVA_HOME进行设置(当然前提是系统中有这个变量)

@SETXJAVA_HOME"V:/ProgramFiles/Java/jdk1.8.0_77"/M

熟悉java配置的就会知道,通过配置JAVA_HOME我们才能使用JDK来进行开发,也就是说,只要能通过命令来修改JAVA_HOME,那就可以自由的切换我们想要的版本了。然后再在脚本中进行一些简单的判断就可以实现基本功能了。

以下是一个基本的脚本,实现在1.6和1.8之间的切换

@ECHO========请以管理员权限运行========
@titleJAVA_HOMESWITCH
@color07
@ECHO请选择
@ECHO1.JDK1.8
@ECHO2.JDK1.6
@CHOICE/C12
@IFERRORLEVEL2gotoswitchTo1.6
@IFERRORLEVEL1gotoswitchTo1.8
@:switchTo1.8
@SETXJAVA_HOME"V:/ProgramFiles/Java/jdk1.8.0_77"/M
@IF%ERRORLEVEL%NEQ0gotoerror
@echo#切换到1.8完成#
@pause
@gotolast
@:switchTo1.6
@SETXJAVA_HOME"C:/ProgramFiles/Java/jdk1.6.0_43"/M
@IF%ERRORLEVEL%NEQ0gotoerror
@echo#切换到1.6完成#
@pause
@gotolast
@:error
@echo没有切换成功......
@gotolast
@:last
@pause

如果你只有两个版本的jdk需要切换,那么将上面的路径修改下,改为自己的JDK安装路径就行了,再改下提示信息就ok了。

运行效果

因为修改的是系统变量,所以必须以管理员身份运行。运行完后可以使用java -version和javac -version验证是否起到作用,或者直接查看系统变量。这时可能你会发现java和javac验证出来的版本不一致,只有javac版本变了,解决方案是把path里面的%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin提到path的开头,保存后就可以实现版本的同步了
全部回答
任务占坑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
藏蓝色的裤子配白色的上衣好看呢还是灰色的好
水晶之痕地址在什么地方,我要处理点事
漫画从一侧面反映了A. 城市不如农村B. 我国已
大自在这个地址在什么地方,我要处理点事
开展危房排查过程中遇到村民不配合该怎么办
秦栏客运站地址在什么地方,想过去办事
峨眉山市新思路网吧地址在什么地方,我要处理
空心菜有毒吗
百世汇通快递新城长岛分部我想知道这个在什么
请问 德国首都柏林的拼音 是什么?我发现 央视
西雅图网咖怎么去啊,我要去那办事
请问华东师大闽行校区附近的邮局地址是多少?
药品经营非法所得30万构成什么罪
编写word文档时为什么文档会突然消失了还未来
东润火锅在哪里啊,我有事要去这个地方
推荐资讯
如何将两个基因构建到同一个载体上
布艺世家怎么去啊,有知道地址的么
脱什么挽什么四字词语 急用
【下车引之】下车引之的引什么意思
过年前买了两条金锦鲤,快过年时候死了一条,
万达嘉华酒店(大堂酒廊)地址有知道的么?有点
候马南庄村的,名字叫陈栋,他爸爸是老师,有
家里做的水沟,水泥还没有完全硬,也还没有粉
生将和黄酒能除湿吗
冰箱冰冻层食物粘连怎么弄开
小博美狗狗拉肚子了,怎么办?今天有点严重带
求一道有关溶液的计算题难度中等以上即可,一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?