Получить версию java из командного файла
Как получить версию java и хотите получить «6» из версии java из пакетного файла. Я попробовал под сценарием, но это не сработало.
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 имеет значение «C: \ Program Files \ Java \ jdk1.6.0_31».
- Копия файла изображения, используется другим процессом
- c ++ шаблон и файлы заголовков
- загрузка нескольких файлов с использованием того же имени ввода в django
- Как сохранить загруженный файл в JSF
- Как заменить сообщение об ошибке ModelState по умолчанию в Asp.net MVC 2?
- Java: как определить правильную кодировку кодировки streamа
- Стандартный сжатый способ копирования файла на Java?
- Плагин загрузки файла jQuery: Можно ли сохранить структуру загруженных папок?
- Переименуйте файл в C #
- Как найти файлы, соответствующие строке подстановки в Java?
- Как я могу получить размер файла в C?
- Макрос __FILE__ показывает полный путь
- Как проверить файл, если он существует с шаблоном в Java?
for /f tokens^=2-5^ delims^=.-_^" %j in ('java -fullversion 2^>^&1') do @set "jver=%j%k%l%m"
Это сохранит версию java в переменной jver
и как целое. И вы можете использовать ее для сравнения .EG
if %jver% LSS 16000 echo not supported version
. Вы можете использовать более крупную версию, удалив% k и% l и% m.Эту версию командной строки.
Для .bat используйте это:
@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"
Согласно моим тестам, это самый быстрый способ получить Java-версию с летучей мыши (поскольку она использует только внутренние команды, а не внешние, как FIND
, FINDSTR
и не использует GOTO
который также может замедлить выполнение скрипта). Некоторые поставщики JDK не поддерживают -fullversion
коммутатор или их реализация не такая же, как в Oracle Oracle (лучше их избегать).
Вы можете сделать это с помощью 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
Пример сценария:
@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
выход: java version: "1.7.0_21-b11"
awk для Windows
это должно быть java -version // если путь среды уже установлен
или% JAVA_HOME% / bin / java -version // если путь еще не установлен
В блочном выражении% var% будет отображаться как значение var
ДО того, как был введен блок.
Переместите echo
вне блока или echo %%g
или call echo %%javaver%%
или вызовите SETLOCAL enabledelayedexpansion
и echo !javaver!
это будет ужасный идиот, но почему бы просто не напечатать JAVA_HOME путь?