我是一名MR工具管理员我需要一个批处理脚本来满足以下要求
必须检查是否在Computer > properties (right click) > Advanced system settings > Advanced > Environment Variables
中设置了Java home。
如果Java home可用,则需要显示"Java home is available"
else "Java home is not available"
。
必须检查使用的java版本,如果大于1.6.495,则必须显示"Java version is too high"
else "Java version is compatible"
。
目前我正在使用下面给出的脚本... 有谁可以请帮助制作上述脚本?
@echo off
IF "%JAVA_HOME%" == "" (
echo Enter path to JAVA_HOME:
set /p JAVA_HOME=
) ELSE (
echo %JAVA_HOME%
)
答案 0 :(得分:1)
给它一个旋转...
我不太确定“java home is available”是什么意思。该脚本检查%JAVA_HOME%
指向的目录是否包含bin\java.exe
。
棘手的一点是获得版本。我使用java -version
的输出并使用FIND
来获取第一行,就像我的系统上的java version "1.7.0_55"
一样。 java -version
将此写入stderr而不是stdout,因此错误重定向(2>& 1
将错误输出重定向到标准输出),然后再导向FIND
。然后将该混乱重定向到临时文件中。然后我使用SET /p
从temp中重定向的输入将该输出放入变量。
@echo off
SETLOCAL
SET TEMPFILE=%TEMP%\tmpfile
IF "%JAVA_HOME%" == "" (
echo Enter path to JAVA_HOME:
set /p JAVA_HOME=
) ELSE (
echo JAVA_HOME = %JAVA_HOME%
)
IF EXIST "%JAVA_HOME%\bin\java.exe" (
ECHO Java home is available
) ELSE ECHO Java home is not available
"%JAVA_HOME%\bin\java" -version 2>& 1 | FIND "java version" > %TEMPFILE%
SET /p VERSIONSTRING= < %TEMPFILE%
DEL %TEMPFILE%
SET MAJORVERSION=%VERSIONSTRING:~14,1%
SET MINORVERSION=%VERSIONSTRING:~16,1%
SET UPDATEVERSION=%VERSIONSTRING:~20,-1%
IF %MAJORVERSION% GTR 1 GOTO TOOHIGH
IF %MINORVERSION% GTR 6 GOTO TOOHIGH
IF %UPDATEVERSION% GTR 495 GOTO TOOHIGH
ECHO Java version is compatible.
GOTO EXIT
:TOOHIGH
ECHO Java version is too high.
:EXIT
ENDLOCAL