Windows 10 で PC を再起動せずにインストール後に CMD で Java を検出する方法

Windows 10 で PC を再起動せずにインストール後に CMD で Java を検出する方法

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.

ここに画像の説明を入力してください

ただ、PCを再起動すると、検出されます

ここに画像の説明を入力してください

質問: PC を再起動せずに、インストールされている Java (任意のバージョン) の存在を検出するには、cmd でどのコマンドを使用すればよいですか?

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

関連情報