首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >批处理文件中的Java版本

批处理文件中的Java版本
EN

Stack Overflow用户
提问于 2013-08-10 01:58:40
回答 2查看 4.2K关注 0票数 2

我的问题,与下面的SO问题非常相似:How to get Java Version from batch script?

事实上,它几乎解决了我的问题。唯一的区别是我必须检查基于%JAVA_HOME%的Java版本,用户可以自由修改。我面临的问题是以下代码:

代码语言:javascript
复制
@ECHO OFF
SETLOCAL enableextensions enabledelayedexpansion

IF "%JAVA_HOME%"=="" (
    @ECHO Please set JAVA_HOME environment variable
    EXIT /B
) 

@echo "%JAVA_HOME%"

REM Checking JAVA_VERSION
SET JAVA_VERSION=
FOR /f "tokens=3" %%g in ('"%JAVA_HOME%"\bin\java -version 2^>^&1 ^| findstr /i "version"') do (
        SET "JAVA_VERSION=%%g"
)

我的系统中的%JAVA_HOME%%指向"C:\Program Files\jdk1.7.0_25“(注意路径中的空格)。

即使使用引号,我在命令行中也会得到以下错误:

程序‘C:\

’未被识别为内部或外部命令、可操作程序或批处理文件。

关于如何解决这个问题有什么想法吗?(对上述文章的评论也提到了这个问题)。我在Windows 7计算机上工作

EN

回答 2

Stack Overflow用户

发布于 2013-08-10 21:09:09

将%JAVA_HOME%变量编辑为:

代码语言:javascript
复制
C:\"Program Files"\jdk1.7.0_25

如果希望它自动执行,请键入

代码语言:javascript
复制
set %JAVA_HOME%=C:\"Program Files"\jdk1.7.0_25

原因:批处理文件不接受引号;它将它们标识为单个文件。因此,它试图查找"C:\Program Files\jdk1.7.0_25“,而不是作为文件夹路径,而是作为根文件夹中的文件夹名称。如果您键入C:\"Program Files"\jdk1.7.0.25,则会显示"Program Files“是单个文件。如果没有重定向操作符,它会认为路径是这样的;C:\Program\Files\jdk1.7.0_25。它适用于我;它可能也适用于您。

希望这能有所帮助

-SonorousTwo

票数 1
EN

Stack Overflow用户

发布于 2018-06-02 05:56:18

我也有类似的问题,看看我的QA:How to get Java version in a batch script subroutine?

根据我的回答:

由于某种原因,通过管道将输出发送到

似乎正在剥离引号。

我设法在没有Epic_Tonic的解决方法的情况下解决了这个问题(使用路径作为参数是非常困难的)。

这在您的情况下应该是可行的:

代码语言:javascript
复制
set first=1
for /f "tokens=3" %%g in ('"%JAVA_HOME%\bin\java" -version 2^>^&1') do (
    if !first!==1 echo %%~g
    set first=0
)

注意:first仅用于搜索java -version输出(reference)的第一行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18152829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档