2013-05-27 25 views
1

我正在嘗試編寫一個啓動Java應用程序的批處理文件。如果未在用戶計算機上安裝Java,則應用程序將根據操作系統以提供的Java版本啓動。如果在批處理文件中的語句執行if和else塊

問題是語句的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
IF DEFINED %JAVA_HOME%( 

您在開括號here.And,用於檢查變量定義你不應該使用** **%ES之前需要一個空間。嘗試這個 - >

IF DEFINED JAVA_HOME ( 

和Java不設置%JAVA_HOME%變量在Windows systems.Check也this

+0

謝謝了''%ES是問題。 在我的情況下尋找JAVA_HOME就足夠了。 –