@echo off
setlocal
set VERSION6="1.6.0_21"
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
@echo Output: %%g
set JAVAVER=%%g
)
set JAVAVER=%JAVAVER:"=%
@echo Output: %JAVAVER%
for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
@echo Major: %%v
@echo Minor: %%w
@echo Build: %%x
)
endlocal
В первом цикле for
, "tokens=3"
говорит, что мы собираемся просто использовать третий токен из вывода команды.Вместо того, чтобы перенаправлять вывод команды java -version
в файл, мы можем запустить эту команду внутри самого цикла for
.Символы (^
) являются управляющими символами и необходимы для того, чтобы мы могли вставить символы >
, &
и |
в командную строку.
В теле for
В цикле мы устанавливаем новую переменную JAVAVER
, чтобы потом можно было выполнить некоторые манипуляции со строкой версии.
Команда set JAVAVER=%JAVAVER:"=%
удаляет двойные кавычки из строки версии.
Последний цикл for
анализирует строку версии Java.delims=.
говорит, что мы собираемся разграничить токены, используя точки.tokens=1-3
говорит, что мы собираемся передать первые три токена из строки в тело цикла.Теперь мы можем получить компоненты строки версии Java, используя явную переменную %%v
и подразумеваемые переменные (следующие буквы в алфавите) %%w
и %%x
.
Когда я запускаю это на моемсистема, которую я получаю:
Output: "1.6.0_24"
Output: 1.6.0_24
Major: 1
Minor: 6
Build: 0_24