Board logo

标题: [系统相关] 求救-bat如何自动设置java系统环境变量并立即生效 [打印本页]

作者: acer9995    时间: 2021-11-30 17:32     标题: 求救-bat如何自动设置java系统环境变量并立即生效

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窗口,才能生效




谢谢
作者: Batcher    时间: 2021-11-30 17:58

回复 1# acer9995


    你是通过什么方法来验证新的环境变量是否生效呢?
作者: 窄口牛    时间: 2021-11-30 20:38

自动设置貌似还做不到,因为每一个版本的安装位置并不是完全一样,并且注册表里也没有相关的位置可查,这也许就是为什么,它自己没有提供相关自动设置的原因?
作者: acer9995    时间: 2021-11-30 20:54

回复 2# Batcher


    我是新开一个cmd窗口 输入 java -version ,提示java 不是内部命令
作者: xczxczxcz    时间: 2021-11-30 21:33

回复 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;
复制代码

作者: acer9995    时间: 2021-11-30 21:53

谢谢  
提示:
:\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
作者: aloha20200628    时间: 2021-12-1 10:57

请查看另一个系统命令setx,专用于设置系统变量...可网搜其具体用法示例...
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/setx




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2