如果批处理文件中的语句执行if和else阻止

时间:2013-05-27 10:45:36

标签: batch-file if-statement

我正在尝试编写一个启动java应用程序的Batch文件。如果用户计算机上未安装Java,则应用程序将根据操作系统以提供的Java版本启动。

问题是语句的IFELSE部分都是执行的,就好像语句不存在一样。

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]

1 个答案:

答案 0 :(得分:2)

IF DEFINED %JAVA_HOME%(  

在这里你需要一个空格在开始括号之前。为了检查是否定义了一个变量,你不应该使用**%** es。试试这个 - &gt;

IF DEFINED JAVA_HOME ( 

并且java没有在Windows系统上设置%JAVA_HOME%变量。还检查this