2

我正在尝试编写一个启动 java 应用程序的批处理文件。如果用户计算机上未安装 Java,则应用程序将使用提供的 Java 版本启动,具体取决于操作系统。

问题是语句的 theIFELSEpart 都像语句不存在一样执行。

IF DEFINED %JAVA_HOME%(

Echo staring with installed java version

) ELSE (
REM check if computer is running 32 or 64 bit
REM code from http://support.microsoft.com/kb/556009/en-us

Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% > checkOS.txt
Find /i "x86" < CheckOS.txt > StringCheck.txt

If %ERRORLEVEL% == 0 (
    Echo starting with 32bit java
    Set JAVA_HOME=bin\java\jdk1.7.0_13\bin
) ELSE (
    Echo starting with 64bit java
    Set JAVA_HOME=bin\java64\jdk1.7.0_13\bin
)

DEL checkOS.txt
DEL StringCheck.txt
)

START %JAVA_HOME%\javaw [java arguments]
4

1 回答 1

2
IF DEFINED %JAVA_HOME%(  

您需要在左括号前留一个空格。并且要检查是否定义了变量,您不应使用 **%**es。试试这个->

IF DEFINED JAVA_HOME ( 

并且 java 没有在 Windows 系统上设置 %JAVA_HOME% 变量。也请检查这个

于 2013-05-27T10:59:13.803 回答