【问题标题】:Batch file to check the minimum required Java version用于检查所需的最低 Java 版本的批处理文件
【发布时间】:2016-01-31 17:24:15
【问题描述】:

我是批处理脚本编码的新手,有点卡在这里。我有一个 .sh 文件,用于检查安装的 java 版本是否至少为 1.8.0:

# Minimal version
MINIMAL_VERSION=1.8.0

# Check if Java is present and the minimal version requirement
_java=`type java | awk '{ print $ NF }'`
CURRENT_VERSION=`"$_java" -version 2>&1 | awk -F'"' '/version/ {print $2}'` #says 1.8.0_65
minimal_version=`echo $MINIMAL_VERSION | awk -F'.' '{ print $2 }'` #says 8
current_version=`echo $CURRENT_VERSION | awk -F'.' '{ print $2 }'` #says 8

if [ $current_version ]; then
  if [ $current_version -lt $minimal_version ]; then
    echo "Error: Java version is too low. At least Java >= ${MINIMAL_VERSION} needed.";
    exit 1;
  fi
    else
      echo "Not able to find Java executable or version. Please check your Java installation.";
      exit 1;
fi

很清楚。我需要为 Windows 编写一个完全相同的逻辑的 .bat 文件。所以这就是我卡住的地方,因为我不知道 awk 的 Windows 类似物。

【问题讨论】:

    标签: sh


    【解决方案1】:

    Here you can see how you can get java version 类似整数,可以进行数值比较:

    @echo off
    :: uncomment the line bellow if the java.exe is not in the %PATH% 
    ::PATH %PATH%;%JAVA_HOME%\bin\
    
    java -version 1>nul 2>nul || (
       echo no java installed
       exit /b 2
    )
    for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
    
    if %jver% LSS 18000 (
      echo java version is too low 
      echo at least 1.8 is needed
      exit /b 1
    )
    

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      相关资源
      最近更新 更多