由于单位两个系统是分别使用java 1.4和java1.6的,导致如果JRE是1.4的,1.6的系统就出现问题,反之亦然,因此想写个bat切换JAVA的系统变量,实现两个系统随用随切换,对java环境变量的初始化我是使用wmic写的,代码如下- @echo off
- echo 开始自动建立JAVA变量,请确认该文件在JAVA根目录下
- pause
-
- echo 开始执行
-
- set home=%~dp0
- set "home=%home:~,-1%"
- echo %home%
- echo 删除JAVA_HOME
- wmic ENVIRONMENT where "name='JAVA_HOME'" delete
- echo 将当前路径赋值给JAVA_HOME
- wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%home%"
- wmic ENVIRONMENT where "name='JAVA_HOME' and username='<system>'" set VariableValue="%home%"
- echo 修改Path
- wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%Path%"
- echo 删除classpath
- wmic ENVIRONMENT where "name='CLASSPATH'" delete
- echo 修改classpath
- wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"
- wmic ENVIRONMENT where "name='CLASSPATH' and username='<system>'" set VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"
-
- echo ---------------------------------------------------------------------
-
- echo 初始化完毕
- pause
复制代码 以上代码在以管理员身份运行后,关掉运行窗口,再使用cmd,运行java -version无效,提示java不是系统命令,在环境变量里查看,确实已经修改了,什么都不修改,点击确定保存,或者注销系统,再使用cmd 运行java -version,就正常了,系统使用的是win7 32位(单位的系统太老,且不能在win10下运行)
,wmic网上查了一下是应该是即时生效的,但是我这里却无法及时生效,请问各位大佬为什么?需要修改哪里才能让程序运行后不用注销立即生效?谢谢。 |