如何在Windows 10中安裝java後,在不重新啟動PC的情況下透過cmd檢測java

如何在Windows 10中安裝java後,在不重新啟動PC的情況下透過cmd檢測java

當我安裝 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

相關內容