2013-07-19 2 views
1
  • 배치 스크립트를 사용하여 JAVA_HOME 변수를 설정해야합니다.
  • 코드는 시도했지만 사용하지는 마십시오.

는 ("java.exe를")에서/f를 %% j에 대한 @echo을 %% ~ DP의 $ 경로 :. j는배치 파일을 사용하여 Java 설치 경로를 가져 오시겠습니까?

위의 스크립트가 비어

제공

FOR/F %% 설정 않는 IN ('REG QUERY "HKLM \ SOFTWARE \ Java 소프트웨어 \ 자바 런타임 환경"/ V CurrentVersion을') 대답 : CurVer = %% B

"= 2 개 토큰 = 2 * 이동"을

위의 스크립트가 제공

1.6 디렉토리에 java.exe/B/S

위의 스크립트가 제공 C : \ WINDOWS \ system32를 실제로 C에 설치된 자바 : \ 프로그램 파일 \ 자바 \ jdk1.6.0_31

  • JAVA_HOME을 C : \ Program Files \ Java \ jdk1.6.0_31로 설정해야합니다.

어떻게 만드나요? 에 대해

답변

1

방법 :

setx JAVA_HOME "path/to/it" 

%JAVA_HOME%

+0

방법 "경로//이하는"얻을 것이다 자바 경로? 나는 JAVA_HOME 경로를 /로 설정하려고 시도했다./ –

+0

@BobbyRachel 미안하지만, 나는 그 경로를 당신의 경로로 바꿔야했다. 나는 그것을 얻는 방법이 아닌 질문을하는 방법에 대답했다. –

+0

그것의 ok .. 내가 설정하는 방법을 안다. 문제는 점점 커지고 있습니다. –

0

을 수행하여 그것을 얻을 당신의 JAVA_HOME이 someName.bat로 실행이 configured.save 경우이 작동합니다.

echo 
    where java 
pause 

OK 다음이를 사용,이 뜻을 실행하는이 방망이를 넣어 같은 장소가

@ECHO OFF 
SET TITLE=JavaHome.bat 
TITLE=%TITLE% 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET JDKBIN=\bin 
SET JREBIN=\jre\bin 
SET JBINARY=%JREBIN%\java.exe 
SET SCRIPTDIR=%~dp0 
SET SCRIPTDIR=%SCRIPTDIR:~0,-1% 
IF EXIST "%SCRIPTDIR%\javahome.txt" (
ECHO. 
ECHO JDK home already set in javahome.txt file. 
GOTO :LOCKFILE 
) 
IF DEFINED JAVA_HOME (
ECHO. 
ECHO JAVA_HOME is already set to !JAVA_HOME! 
CALL :STRIP "!JAVA_HOME!">"!SCRIPTDIR!\javahome.txt" 
ECHO Created !SCRIPTDIR!\javahome.txt file containing JAVA_HOME 
GOTO :END 
) 
SET "dir=%~f0" 
:DIRLOOP 
CALL :FGETDIR "%dir%" 
IF EXIST "%dir%\%JBINARY%" (
ECHO Parent directory search found JAVA_HOME at %dir% 
GOTO :SEARCHSET 
) 
IF "%dir:~-1%" == ":" (
ECHO Parent directory search reached root and "%JBINARY%" was not found. 
GOTO :REGISTRY 
) 
GOTO :DIRLOOP 
:SEARCHSET 
SET JAVA_HOME=%dir% 
ECHO %JAVA_HOME%>javahome.txt 
ECHO Created file %SCRIPTDIR%\javahome.txt with value %JAVA_HOME% 
GOTO :END 
:REGISTRY 
:: registry search section 
:: runs only when JAVA_HOME not set, file search fails, and javahome.txt doesn't exist 
ECHO Searching registry for JAVA_HOME... 
ECHO. 2>merged.txt 
ECHO. 2>list.txt 
ECHO. 2>uniquelist.txt 
IF NOT EXIST reg32.txt ECHO. 2>reg32.txt 
IF NOT EXIST reg64.txt ECHO. 2>reg64.txt 
START /w REGEDIT /e reg32.txt "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Development Kit" 
TYPE reg32.txt | FIND "JavaHome" > merged.txt 
START /w REGEDIT /e reg64.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit" 
TYPE reg64.txt | FIND "JavaHome" >> merged.txt 
FOR /f "tokens=2 delims==" %%x IN (merged.txt) DO (
CALL :STRIP "%%~x" >>list.txt 
) 
FOR /F "tokens=* delims= " %%a IN (list.txt) DO (
SET str=%%a 
FIND /I ^"!str!^" list.txt>nul 
FIND /I ^"!str!^" uniquelist.txt>nul 
IF ERRORLEVEL 1 ECHO !str!>>uniquelist.txt 
) 
:PROMPT 
ECHO Select a JDK from the list: 
SET /A COUNT=0 
FOR /f "tokens=1,* delims=" %%y IN (uniquelist.txt) DO (
SET /A COUNT += 1 
ECHO !COUNT!: %%~y 
) 
SET /P NUMBER=Type a number here: 
IF "%NUMBER%" GTR "%COUNT%" GOTO :PROMPT 
SET /A COUNT=0 
FOR /f "tokens=1,* delims=" %%z IN (uniquelist.txt) DO (
SET /A COUNT += 1 
IF !COUNT!==!NUMBER! (
SET JAVA_HOME=%%~z 
) 
) 
ECHO %JAVA_HOME%>javahome.txt 
GOTO CLEANUP 

:: batch functions section 
:FGETDIR 
SET "dir=%~dp1" 
SET "dir=%dir:~0,-1%" 
EXIT /B 0 
:STRIP 
REM Strip quotes and extra backslash from string 
SET n=%~1 
SET n=%n:\\=\% 
SET n=%n:"=% 
IF NOT "%n%"=="" ECHO %n% 
GOTO :EOF 
:: cleanup and end 
:CLEANUP 
REM cleanup of registry search 
DEL /Q merged.txt 
DEL /Q list.txt 
DEL /Q uniquelist.txt 
DEL /Q reg32.txt 
DEL /Q reg64.txt 
GOTO :LOCKFILE 
:: if all fails 
:FAILED 
IF NOT DEFINED JAVA_HOME (
ECHO Error: JAVA_HOME not set in system vars, file search failed, && javahome.txt didn't exist. 
GOTO :END 
) 
:LOCKFILE 
ECHO. 
SET /P JAVA_HOME=<"%SCRIPTDIR%\javahome.txt" 
ECHO The file %SCRIPTDIR%\javahome.txt shows JAVA_HOME to be %JAVA_HOME% 
:END 
FOR /l %%a in (30,-1,1) do (TITLE %TITLE% -- Closing in %%as&ping -n 2 -w 1 127.0.0.1>NUL) 

참고로 자바 경로를 포함하는 텍스트 파일을 생성하여 : 원래 참조 : https://gist.github.com/djangofan/1445440

+0

JAVA_HOME은 (는) 의미합니까? 그것의주는, C : \ Windows \ System32 \ java.exe. 프로그램 파일 위치를 원해. –

2

내가 가진를 해결책. 이것은 정확히 설치된 경로를 제공합니다. 자바 1.6 JavaHome

FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion') DO 
set CurVer=%%B ECHO %CurVer% 


FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%CurVer%" /v JavaHome') 
DO set JavaPath=%%B ECHO %JavaPath% 
2

경로 :

@ECHO OFF &SETLOCAL 
FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6" /v JavaHome') DO set "JavaHome16=%%b" 
ECHO %JavaHome16% 

경로 자바 1.7 JavaHome에 :

@ECHO OFF &SETLOCAL 
FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7" /v JavaHome') DO set "JavaHome17=%%b" 
ECHO %JavaHome17% 
관련 문제