好吧,之前讲了因为机器安装了好多IDE,相应还有不同版本的应用服务器像tomcat6,7,resin,apache,发现为了正常使用这些东档需要JDK在32位和64位,版本6和版本7之间反复切换,还烦,于是简单写了下面这个批处理。
和上一篇文章一样,因为这个富文本框的代码规范,非要给我的符号加上转义\,简直无语。
.bat文件亲测win7,xp正常运行,win7还要使用管理员权限。不想再吐槽了。
如果有不正常的地方请仔细检查是不是因为转义符的原因。好烦
还要再说一下,这样从注册表里修改了JAVA_HOME环境变量,改变是持续性的,而不是仅在当前CMD窗口下生效。但是:
通常会发现切换之后环境变量是修改过来了,但是还是使用java -version时发现并没有改过来,这时请检查:
1,你的系统目录下是不是有java.exe等文件。好像JAVA8安装后会把java.exe等文件直接拷到system32下,这简直无语.
碰到这种情况,请把path环境变量中,Java的相关配置放到最前面。(%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;放到最前面)
2,这样处理之后还是有延迟才能起作用啊啊阿。
这种情况也是莫名其妙的,每次修改完以后还要在我的电脑->系统属性->高级->环境变量窗口点确定才能真正生效(即:java -version才会出现你所切换的JDK版本)
使用spy++跟踪系统事件,发现每次单击的时候其实是发送了一条消息。sendmessage,这是Win32 编程的一个接口方法,具体使用还得通过相应的高级语言去弄,好烦
我写批处理不就是图个轻松简单么,还要这么搞,烦
像什么taskkill /f /im explorer.exe之后再启动explore.exe亲测是没有什么作用的。
关于这个问题,下一步我给出Java的解决方法吧。
最后,会发现在前面常量定义块:init里 set JAVA_HOME_1.6=C:\Program Files (x86)\Java\jdk1.6.0都给出了具体的目录,这些是你JDK安装目录(JAVA_HOME) ,相信我,自己手写会比机器扫描快一万倍,事实上我之前写了一个扫描的批处理,后来又想,这样既增加了代码的复杂程度,又增大了系统开销,跟简单明了的初衷严重不符,于是就手写了。
考虑一个问题,程序运行要使用Java环境,会从那里读环境变量呢?所以这样修改之后虽然自己测试感觉有延迟作用,但实际上是可用的!!!!!
为什么,到底发生了什么情况.........................
点击(此处)折叠或打开
- echo off
-
- rem window系统下切换JDk版本
- rem by machoyt 20150120
-
- color 0a
- mode con cols=80 lines=20
- echo 当前JDK 版本:
- java -version
- ping 127.0.0.1 -n 2 -w 1000 > nul
- echo.
-
- :init
- set JAVA_HOME_1.6=C:\Program Files (x86)\Java\jdk1.6.0
- set JAVA_HOME_1.7=C:\Program Files (x86)\Java\jdk1.7.0_25
- set JAVA_HOME_1.8=C:\Program Files\Java\jdk1.8.0_25
-
- :menu
- echo =============================================
- echo 请选择要切换的jdk版本
- echo 1:版本1.6
- echo 2:版本1.7
- echo 3: 版本1.8
- echo 4: 取消
- echo =============================================
- set /p ch=请输入1、2、3选择相应版本,输入4退出
- if "%ch%"=="1" set var=%JAVA_HOME_1.6% && goto enable
- if "%ch%"=="2" set var=%JAVA_HOME_1.7% && goto enable
- if "%ch%"=="3" set var=%JAVA_HOME_1.8% && goto enable
- if "%ch%"=="4" goto exit
- echo 请确认您的输入
- goto menu
-
- :enable
- rem start /I /WAIT /B wmic ENVIRONMENT where name='JAVA_HOME' set VariableValue="%var%"
- reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%var%" /f && ^
- echo 已经成功为您切换了JDK版本,系统即将退出: && ping 127.1 -n 3 > nul && goto exit
-
- :exit
.bat文件亲测win7,xp正常运行,win7还要使用管理员权限。不想再吐槽了。
如果有不正常的地方请仔细检查是不是因为转义符的原因。好烦
还要再说一下,这样从注册表里修改了JAVA_HOME环境变量,改变是持续性的,而不是仅在当前CMD窗口下生效。但是:
通常会发现切换之后环境变量是修改过来了,但是还是使用java -version时发现并没有改过来,这时请检查:
1,你的系统目录下是不是有java.exe等文件。好像JAVA8安装后会把java.exe等文件直接拷到system32下,这简直无语.
碰到这种情况,请把path环境变量中,Java的相关配置放到最前面。(%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;放到最前面)
2,这样处理之后还是有延迟才能起作用啊啊阿。
这种情况也是莫名其妙的,每次修改完以后还要在我的电脑->系统属性->高级->环境变量窗口点确定才能真正生效(即:java -version才会出现你所切换的JDK版本)
使用spy++跟踪系统事件,发现每次单击的时候其实是发送了一条消息。sendmessage,这是Win32 编程的一个接口方法,具体使用还得通过相应的高级语言去弄,好烦
我写批处理不就是图个轻松简单么,还要这么搞,烦
像什么taskkill /f /im explorer.exe之后再启动explore.exe亲测是没有什么作用的。
关于这个问题,下一步我给出Java的解决方法吧。
最后,会发现在前面常量定义块:init里 set JAVA_HOME_1.6=C:\Program Files (x86)\Java\jdk1.6.0都给出了具体的目录,这些是你JDK安装目录(JAVA_HOME) ,相信我,自己手写会比机器扫描快一万倍,事实上我之前写了一个扫描的批处理,后来又想,这样既增加了代码的复杂程度,又增大了系统开销,跟简单明了的初衷严重不符,于是就手写了。
考虑一个问题,程序运行要使用Java环境,会从那里读环境变量呢?所以这样修改之后虽然自己测试感觉有延迟作用,但实际上是可用的!!!!!
为什么,到底发生了什么情况.........................
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29209660/viewspace-1409394/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29209660/viewspace-1409394/