我正在尝试编写一个启动java应用程序的Batch文件。如果用户计算机上未安装Java,则应用程序将根据操作系统以提供的Java版本启动。
问题是语句的IF
和ELSE
部分都是执行的,就好像语句不存在一样。
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]
答案 0 :(得分:2)
IF DEFINED %JAVA_HOME%(
在这里你需要一个空格在开始括号之前。为了检查是否定义了一个变量,你不应该使用**%** es。试试这个 - &gt;
IF DEFINED JAVA_HOME (
并且java没有在Windows系统上设置%JAVA_HOME%变量。还检查this