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\"]+")
où 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%