Comment obtenir la version java en utilisant une seule commande dans l’invite de commande Windows?

Je dois récupérer la version 1.6.0_26 de 1.6.0_26 partir de la sortie Java-version ci-dessous

 java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing) 

S’il vous plaît aidez-moi à obtenir 1.6.0_26

Remarque: je n’ai pas besoin de Power Shell ou de programmes externes

METTRE À JOUR

Je suis venu avec java -version 2>&1 | findstr /i "version" java -version 2>&1 | findstr /i "version" qui me donne sous la sortie

 java version "1.6.0_22" 

maintenant, même une méthode Java de correspondance de motif ou de regex fonctionnera pour moi 🙂

Vous pouvez exécuter la solution de la question liée à Pangea sur une seule ligne:

    
 c: \> for / f "jetons = 3"% g in ('version-java-2 ^> ^ & 1 ^ | findstr / i "version"') do @echo% g
 "1.6.0_24"
 c: \> for / f "jetons = 3"% g in ('version-java-2 ^> ^ & 1 ^ | findstr / i "version"') fait (@set v =% g & @echo% v: ~ 1,8%)
 1.6.0_24

Je viens de vérifier et il semble que mon deuxième exemple ne fonctionne que sous Windows 7, ce qui suit fonctionne pour moi sur Windows XP (il devrait donc également fonctionner sur Windows 7)

 pour / f "jetons = 3"% g in ('version-java 2 ^> ^ & 1 ^ | findstr / i "version"') fait (@echo% ~ g)

vous pouvez le faire depuis une seule ligne depuis la commande promt C:> java -version

Tu peux essayer:

 java -version 2>&1 | awk '/version/ {print $3}' | egrep -o '[^\"]*' 
 for /f tokens^=2-5^ delims^=.-_^" %j in ('java -fullversion 2^>^&1') do @set "jver=%j%k%l%m" 

Cela va stocker la version java dans la variable jver et en tant jver Et vous pouvez l’utiliser pour les comparaisons .EG

 if %jver% LSS 16000 echo not supported version 

Vous pouvez utiliser une version plus importante en supprimant% k et% l et% m.Cette invite de commande.

Pour .bat, utilisez ceci:

 @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" 

Selon mes tests, c’est le moyen le plus rapide d’obtenir la version java à partir de bat (car elle utilise uniquement des commandes internes et non externes comme FIND , FINDSTR et n’utilise pas GOTO ce qui peut aussi ralentir le script). Certains fournisseurs de JDK ne supportent pas le commutateur -fullversion ou leur implémentation n’est pas la même que celle fournie par Oracle (mieux vaut les éviter).

J’ai écrit la fonction ci-dessous pour récupérer la version 1.6.0_26

 Ssortingng regexMatch(Ssortingng myInput, Ssortingng myRegex) { Ssortingng ResultSsortingng Pattern regex Matcher regexMatcher regex = Pattern.comstack(myRegex, Pattern.DOTALL); regexMatcher = regex.matcher(myInput); List matchList = new ArrayList(); while (regexMatcher.find()) { matchList.add(regexMatcher.group()); } for(int i=0;i 

et appelle

 rs=regexMatch(rs,"[a-zA-Z\"]+") 

rs="java version \"1.6.0_26\""

Basé sur @a_horse_with_no_name mais détectant d’abord si la commande existe.

 where java > nul if %ERRORLEVEL% neq 0 ( set java_v="Command not found" ) else ( for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do set java_v=%%g ) echo Java: %java_v:~1,8%