找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18285|回复: 6

[系统相关] 求救-bat如何自动设置java系统环境变量并立即生效

[复制链接]
发表于 2021-11-30 17:32:46 | 显示全部楼层 |阅读模式
bat如何
1.自动设置java系统环境变量
2.并立即生效

环境是windows server 2016 standart
我用的以下命令
  1. wmic ENVIRONMENT where "name='JAVA_HOME'" delete 2>&1 >nul
  2. wmic ENVIRONMENT where "name='CLASSPATH'" delete 2>&1 >nul
  3. wmic ENVIRONMENT create name="JAVA_HOME",username="<system>",VariableValue="%jh%"
  4. wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%Path%"
  5. wmic ENVIRONMENT create name="CLASSPATH",username="<system>",VariableValue=".;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar"
复制代码
出现问题:
1.不能立即生效
2.手动点击到环境变量界面确认,再次打开cmd窗口,才能生效




谢谢
发表于 2021-11-30 17:58:59 | 显示全部楼层
回复 1# acer9995


    你是通过什么方法来验证新的环境变量是否生效呢?
发表于 2021-11-30 20:38:29 | 显示全部楼层
自动设置貌似还做不到,因为每一个版本的安装位置并不是完全一样,并且注册表里也没有相关的位置可查,这也许就是为什么,它自己没有提供相关自动设置的原因?
 楼主| 发表于 2021-11-30 20:54:38 | 显示全部楼层
回复 2# Batcher


    我是新开一个cmd窗口 输入 java -version ,提示java 不是内部命令
发表于 2021-11-30 21:33:34 | 显示全部楼层
回复 4# acer9995


    没用过 Server 系统 下面这个试下: 右键 管理员运行 ,若成功则在 命令行窗口 输入 :javac

  1. $REG = [Ordered]@{
  2.         Path1 = "HKLM:\SOFTWARE\JavaSoft";
  3.         Path2 = "HKLM:\SOFTWARE\WOW6432Node\JavaSoft";
  4.         Path3 = "HKCU:\SOFTWARE\JavaSoft";
  5.         Path4 = "HKCU:\SOFTWARE\WOW6432Node\JavaSoft";
  6. };

  7. $Arr = @(
  8.         $REG.Values | Foreach {
  9.                 if (Test-Path $_) { LS $_ -rec | ? { if ( (gp registry::$_).JavaHome ) { $_ } } };
  10.         }
  11. );

  12. $JAVA_HOME = (GP registry::$($Arr[0].Name)).JavaHome; #设置要添加的环境变量路径
  13. $ClassPath = "%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar";

  14. $directory = Split-Path $JAVA_HOME -Leaf;
  15. $REF = $env:Path -Split ';' -NotMatch $directory -Join ';';
  16. $Path = $REF + ';' + "%JAVA_HOME%\bin;";

  17. Write-Host '$JAVA_HOME='$JAVA_HOME
  18. Write-Host '$ClassPath='$ClassPath

  19. [Environment]::SetEnvironmentVariable('JAVA_HOME', $JAVA_HOME, 'Machine');
  20. [Environment]::SetEnvironmentVariable('ClassPath', $ClassPath, 'Machine');
  21. [Environment]::SetEnvironmentVariable('Path', $Path, 'Machine');

  22. pause;
复制代码
 楼主| 发表于 2021-11-30 21:53:45 | 显示全部楼层
谢谢  
提示:
:\Users\Administrator\Desktop>锘?REG = [Ordered]@{
'锘?REG' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>Path1 = "HKLM:\SOFTWARE\JavaSoft";
'Path1' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>Path2 = "HKLM:\SOFTWARE\WOW6432Node\JavaSoft";
'Path2' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>Path3 = "HKCU:\SOFTWARE\JavaSoft";
'Path3' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>Path4 = "HKCU:\SOFTWARE\WOW6432Node\JavaSoft";
'Path4' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>};
'}' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator\Desktop>pause
请按任意键继续. . .





我的需求:
1.设置JAVA_HOME 为 C:\Program Files\Java
2.设置系统环境变量 CLASSPATH 为.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar
3. 设置ERLANG_HOME 为C:\Program Files\erl-23.0
4。把 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%ERLANG_HOME%\bin 添加到全局环境PATHZ中,且多次执行不要重复。

我的初步代码如下,多次执行后,有重复的,另外JAVA还不生效,

reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v JAVA_HOME /t REG_SZ /d "%jdk_path%" /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v CLASSPATH /t REG_SZ /d ".;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar" /f
:: 配置系统环境变量,包括c:\dll
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%ERLANG_HOME%\bin;%Path%" /f
::设置rabbitmq erlang环境变量
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v ERLANG_HOME /t REG_SZ /d "C:\Program Files\erl-23.0" /f
发表于 2021-12-1 10:57:46 | 显示全部楼层
请查看另一个系统命令setx,专用于设置系统变量...可网搜其具体用法示例...
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/setx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 19:14 , Processed in 0.014702 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表