0

I need to specify my Java folder in order to use Sikuli. Problem is: The folder has different names depending on its version

How can I use C:\Program Files (x86)\Java\jre1.8.0_60\bin\java.exe in a batch file without knowing the jre1.8.0_60 part. I need some kind of wildcard. In C:\Program Files (x86)\Java\ is only the folder I need.

I hope it is clear what I am searching for. Couldn't find anything with google cause I am not sure how it is called.

Thanks in advance

Gerald Schneider
  • 17,416
  • 9
  • 60
  • 78
user363808
  • 53
  • 1
  • 10

2 Answers2

2

The java home directory is usually set in the environment variable JAVA_HOME.

So you should be able to use:

"%JAVA_HOME%\bin\java.exe"

(Use " to prevent problems with spaces in the path)

Gerald Schneider
  • 17,416
  • 9
  • 60
  • 78
1

Actually, %JAVA_HOME% isn't defined on my machine. If not on yours either, or if you don't want to depend on it, you could search %PROGRAMFILES(x86)%\java recursively for java.exe with the highest creation date.

@echo off
setlocal enabledelayedexpansion

:: find newest java.exe
<NUL set /P "=Searching for Java executable... "
for /f "delims=" %%I in ('dir /s /b "%PROGRAMFILES(x86)%\java\*java.exe"') do (
    set "jtest=%%I"
    for /f "tokens=2 delims=.=" %%a in (
        'wmic datafile where "name='!jtest:\=\\!'" get CreationDate /format:list ^| find "="'
    ) do (
        set "created_test=%%a"
        set "created_test=!created_test:~0,-4!"
    )
    if not defined created (
        set "javaexe=!jtest!"
        set "created=!created_test!"
    ) else if !created_test! gtr !created! (
        set "javaexe=!jtest!"
        set "created=!created_test!"
    )
)

if not defined javaexe (
    echo Not found.  Is Java installed?
    goto :EOF
) else (
    setlocal disabledelayedexpansion & echo Found! & endlocal
    echo !javaexe!
    echo Relax and enjoy the show.
)
rojo
  • 24,000
  • 5
  • 55
  • 101
  • Thanks a lot!!! I don't understand your code very well since my skills are below basic but it worked perfectly. I used !javaexe! for further actions. Now I am curious, why Sikuli doesnt search Java like this. – user363808 Oct 20 '15 at 10:23