[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 求教大佬!使用wmic设置java环境变量无法及时生效

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

本帖最后由 yhcfsr 于 2019-3-30 15:48 编辑

环境变量设置用 setx 不是更方便吗?
  1. setx JAVA_HOME "%JAVA_HOME%;d:\test"
复制代码
老实说,这种问题我之前遇到过一次,设置环境变量,然后在powershell里调用没有生效,不过CMD是没有问题的
然后重启电脑powershell就可以调用了,只遇到一次,正常情况是即时生效的,而且之后也没有再遇到这样的问题了.有点莫名其妙
QQ 33892006

TOP

回复 2# yhcfsr


    后来是改用setx实现了,但是很纠结这个不能即时生效的问题。

TOP

返回列表