Windows 10에서 PC를 다시 시작하지 않고 설치 후 cmd로 Java를 감지하는 방법

Windows 10에서 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.

여기에 이미지 설명을 입력하세요

단, 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

C 드라이브에는 Java가 설치되어 있다고 가정합니다. 그렇지 않으면 명령에서 드라이브 문자를 변경할 수 있습니다.

각 드라이브를 반복하고 결과가 발견되면 바로 중지하려면 다음 powershell 명령을 사용할 수 있습니다.

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

관련 정보