So erkennen Sie Java nach der Installation per cmd, ohne den PC in Windows 10 neu zu starten

So erkennen Sie Java nach der Installation per cmd, ohne den PC in Windows 10 neu zu starten

Wenn ich Java installiere, wird es am Ende der Installation auf meinem System nicht erkannt:

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

Und

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

Bildbeschreibung hier eingeben

Erst wenn ich den PC neu starte, erkennt er es

Bildbeschreibung hier eingeben

Frage: Welchen Befehl muss ich per cmd verwenden, um festzustellen, ob Java (jede Version) installiert ist, ohne den PC neu zu starten?

PD: getestet auf Windows 10 Pro x64 21h2

Aktualisieren:

Ich habe geändertCarsten.R's Lösung:

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

Antwort1

Hallo, siehe meine Batchdatei unten. Das funktioniert vor dem Neustart, es extrahiert den Installationspfad aus der Registrierung und fügt ihn dem Suchpfad des aktuellen Cmd-Prozesses hinzu.

  1. Suchen Sie das JAVA HOME mit der Anforderungsabfrage
  2. Geteilte REG_SZ-Anforderungsabfrage
  3. Das Ergebnis zuschneiden
  4. Zum Prozesssuchpfad hinzufügen
  5. Verwenden Sie WHERE oder JAVA nach Belieben
@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-*

Übrigens das neuere OpenJDK 17https://docs.microsoft.com/en-us/java/openjdk/download, funktioniert genau so, wie Sie es möchten. Kein Schnickschnack nötig.

Wenn Sie testen möchten, ob etwas in Windows installiert ist, ist die Abfrage der Deinstallations-Registrierungsschlüssel der richtige Weg. Dies kann auch für andere Anwendungen nützlich sein.

Das Beispiel wurde mit dem Microsoft-Paket erstellt. Die Registrierungsschlüssel können je nach Eintrag variieren, aber ich bin sicher, dass Sie sie problemlos übernehmen können.

Hier ein Beispiel für 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

Antwort2

Mit der folgenden Befehlszeile können Sie die Datei „java.exe“ finden.

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

Es wird davon ausgegangen, dass Java auf Laufwerk C installiert ist. Andernfalls können Sie den Laufwerksbuchstaben im Befehl ändern.

Wenn Sie alle Laufwerke durchlaufen und direkt anhalten möchten, sobald ein Ergebnis gefunden wurde, können Sie diesen Powershell-Befehl verwenden:

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

verwandte Informationen