2013-07-18 24 views
7

Come ottenere la versione java e ottenere "6" dalla versione java dal file batch. Ho provato sotto lo script, ma non ha funzionato.Scarica la versione java dal file batch

REM check java exists using JAVA_HOME system variable 

if "%JAVA_HOME%" == "" (
ECHO Installing java 
start /w jdk.exe /s 
SETX -m JAVA_HOME "C:\Program Files\Java\jdk1.6.0_31" 
ECHO java installed successfully 
) ELSE (
ECHO checking java version 
goto check_java_version 
) 

REM check java version using JAVA_HOME system variable 
:check_java_version 
set PATH=%PATH%;%JAVA_HOME%\bin 
for /f tokens^=2-5^ delims^=.-_^" %%j in ('%JAVA_HOME%/bin/java -version 2^>^&1') do set "jver=%%j%%k%%l%%m" 
echo %jver% 

JAVA_HOME ha "C: \ Program Files \ Java \ jdk1.6.0_31" value.

risposta

15
for /f tokens^=2-5^ delims^=.-_^" %j in ('java -fullversion 2^>^&1') do @set "jver=%j%k%l%m" 

Questo memorizzerà la versione Java in jver variabile e come intero E lo si può utilizzare per il confronto .EG

if %jver% LSS 16000 echo not supported version 

.È possibile utilizzare la versione più grande, eliminando% ke % l e% m.Questa versione del prompt dei comandi.

Per uso bat questo:

@echo off 
PATH %PATH%;%JAVA_HOME%\bin\ 
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m" 

secondo i miei test questo è il modo più veloce per ottenere la versione di Java da pipistrello (in quanto utilizza solo i comandi interni e non quelli esterni come FIND , FINDSTR e non usa GOTO che può anche rallentare lo script). Alcuni fornitori JDK non supportano lo switch -fullversion o la loro implementazione non è la stessa di quella fornita da Oracle (meglio evitarli).

+0

Come stampare il valore di jver. ho provato con echo% jver%. non funziona –

+0

prova con *** PATH% PATH%;% JAVA_HOME% \ bin \\ *** prima del ciclo for – npocmaka

+0

ottenendo errore: si dice che * path non è un comando. quindi per echo% jver% dice echo is off. ho aggiornato la mia domanda sopra. ha dato la sceneggiatura completa. dai un'occhiata a plz. –

0

dovrebbe essere java -version // se percorso dell'ambiente è già impostata

o% JAVA_HOME%/bin/java -version // se il percorso non è già impostato

0

All'interno di un blocco di istruzioni,% var% verrebbe echeggiato come il valore di var PRIMA che il blocco fosse stato inserito.

Spostare il echo al di fuori del blocco o eco %%g o call echo %%javaver%% o invocare SETLOCAL enabledelayedexpansion e echo !javaver!

3

Si può fare questo con awk:

 
>java -fullversion 2>&1|awk "{print $NF}" 
"1.7.0_21-b11" 

>java -fullversion 2>&1|awk -F\" "{print $(NF-1)}" 
1.7.0_21-b11 

script di esempio:

@ECHO OFF &SETLOCAL 
FOR /f %%a IN ('java -fullversion 2^>^&1^|awk "{print $NF}"') DO SET "javaversion=%%a" 
IF DEFINED javaversion (ECHO java version: %javaversion%) ELSE ECHO java NOT found 

output è: java version: "1.7.0_21-b11"
awk for Windows

+0

come usare t suo nel mio comando. puoi darmi una sceneggiatura completa? –

+0

Script @BobbyRachel inserito. – Endoro

0

sarà idiota burbero ma perché non basta stampare il percorso JAVA_HOME?