在 Windows 10 中,安装 Java 后如何通过 cmd 检测 Java,而无需重新启动 PC

在 Windows 10 中,安装 Java 后如何通过 cmd 检测 Java,而无需重新启动 PC

当我安装 Java 时,在安装结束时,它没有在我的系统上检测到它:

C:\Windows\system32>where java
INFO: No file could be found for the given patterns.

C:\Windows\system32>java -version
"java" is not recognized as an internal or external command,
executable program or batch file.

在此处输入图片描述

只有当我重新启动电脑时它才会检测到它

在此处输入图片描述

问题:我应该在 cmd 中使用什么命令来检测是否安装了 java(任何版本),而无需重新启动 PC?

PD: 在 Windows 10 Pro x64 21h2 上测试

更新:

我已经修改了Carsten.R 的解决方案

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f *jre* >nul 2>&1 & IF %errorlevel% == 0 (echo OK) else (echo FAIL)

答案1

您好,请查看下面的批处理文件。它在重启之前有效,它会从注册表中提取安装路径并将其添加到当前 cmd 进程的搜索路径中。

  1. 使用 req 查询查找 JAVA HOME
  2. 拆分 REG_SZ 请求查询
  3. 修剪结果
  4. 添加到进程搜索路径
  5. 根据需要使用 WHERE 或 JAVA
@echo off
SETLOCAL
for /f "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /V JAVA_HOME  ^|findstr /ri "REG_SZ"') do SET RESULT=%%~a
SET "RESULT=%RESULT:* REG_SZ =%"
for /f "tokens=* delims= " %%a in ("%RESULT%") do set TRIMRESULT=%%a
echo ---%TRIMRESULT%---
SET PATH=%PATH%;%TRIMRESULT%

where java
pause
REM ALTERNATIVE REG KEY
REM reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /S /f *jdk-*

顺便说一下,较新的 OpenJDK 17https://docs.microsoft.com/en-us/java/openjdk/download,完全按照您的意愿工作。无需花哨的东西。

如果您想测试某些东西是否已在 Windows 中安装,查询卸载注册表项是正确的方法。它对其他应用程序也很有用。

该示例是使用 Microsoft 软件包注册表项制作的,可以根据条目而变化,但我相信您可以轻松采用它。

这是 jre-8u341-windows-x64.exe 的示例

@echo off
SETLOCAL
for /f "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f *jre*  ^|findstr /ri "REG_SZ"') do SET RESULT=%%~a
echo 1 ---%RESULT%---
pause
SET "RESULT=%RESULT:* REG_SZ =%"
echo 2 ---%RESULT%---
pause
for /f "tokens=* delims= " %%a in ("%RESULT%") do set TRIMRESULT=%%a
echo 3 ---%TRIMRESULT%---
pause
SET PATH=%PATH%;%TRIMRESULT%

where java

pause

答案2

您可以使用以下命令行来查找文件“java.exe”

cd C:\ & dir /s /b java.exe

假设 Java 安装在 C 盘。否则,您可以在命令中更改驱动器号。

如果您想要遍历每个驱动器,并在找到结果后直接停止,则可以使用此 powershell 命令:

$(Get-PSDrive -PSProvider 'FileSystem' |%{ gci -Recurse $_.Root |?{$_.Name -eq "Java.exe"} | Select -First 1}).FullName

相关内容