
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 プロセスの検索パスに追加します。
- reqクエリでJAVA HOMEを見つける
- REG_SZ要求クエリを分割
- 結果をトリミングする
- プロセス検索パスに追加
- 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