0

Java をインストールして Java パスを設定する必要があります。Java をインストールでき、 C:\Program Files (x86)\Java に 2 つのフォルダー、つまり Jre と Jdk が表示されます。

しかし、コードで JAVA_PATH を設定しようとしているのに、コマンド propmt echo コマンドでそのパスを設定できない場合、つまり @echo JAVA_HOME = %JAVA_HOME%. 私は今日スクリプト自体を開始しましたが、見逃している場所を修正できませんか?

これが私が試したコードです:-

     @echo off

    for /f %%j in ("java.exe") do (
     set JAVA_HOME=%%~dp$PATH:j
     **@echo JAVA_HOME = %JAVA_HOME%**
    ECHO "ok1"
    PAUSE
    )
   if %JAVA_HOME%.==. (
   @echo java.exe not found 
    PAUSE
    CD C:\Users\Pathfinder\Desktop
   ECHO "Time In"

    jdk-6u43-windows-i586.exe /s "/v\"/qn ADDLOCAL=ALL  REBOOT=Suppress JAVAUPDATE=0  
     CUSTOM=1\""

     timeout /t 10 /nobreak
     ECHO "Time Out"
     set path="C:\Program Files (x86)\Java\jre6\bin";%path%

     @echo PATH= %path%
     set JAVA_HOME="C:\Program Files (x86)\Java\jdk1.6.0_43\bin";%JAVA_HOME%

     **@echo JAVA_HOME = %JAVA_HOME%**

     PAUSE
     ) else (
     @echo JAVA_HOME = %JAVA_HOME%

   PAUSE
    )

バッチファイルを1回実行すると、バッチファイルをダブルクリックした後にプロセスが完了したことを意味し、バッチファイルを再度ダブルクリックすると、再び「IF」状態になります。つまり、「java.exeが見つかりません」。

4

1 に答える 1

1

遅延変数展開: 括弧内のすべての変数が実行前に評価されます。

SETLOCAL ENABLEDELAYEDEXPANSIONバッチから変数を取得する必要があるため、ここでは使用できません。

したがって、括弧内の変数を使用せずにバッチを書き直す必要があります。

@echo off
SET JAVA_HOME=
for /f %%j in ("java.exe") do set JAVA_HOME=%%~dp$PATH:j
IF DEFINED JAVA_HOME GOTO :JAVA_FOUND

:JAVA_NOT_FOUND
@echo java.exe not found 
PAUSE
CD C:\Users\Pathfinder\Desktop
ECHO "Time In"
jdk-6u43-windows-i586.exe /s "/v\"/qn ADDLOCAL=ALL  REBOOT=Suppress JAVAUPDATE=0 CUSTOM=1\""
timeout /t 10 /nobreak
ECHO "Time Out"
set path="C:\Program Files (x86)\Java\jre6\bin";%path%
@echo PATH= %path%
set JAVA_HOME="C:\Program Files (x86)\Java\jdk1.6.0_43\bin";%JAVA_HOME%
@echo JAVA_HOME = %JAVA_HOME%
GOTO :END

:JAVA_FOUND
@echo JAVA_HOME =  %JAVA_HOME%
ECHO "ok1"
PAUSE
@echo JAVA_HOME = %JAVA_HOME%
PAUSE

:END

最適化はあなたに任せました。

START /WAITの代わりにもチェックしてくださいtimeout

于 2013-08-26T13:19:26.127 に答える