The system cannot find the path specified (Batch file) - Using path with white spaces - PENTAHO spoon.bat (pdi-ce-7.1.0.0-12)

前端 未结 2 1774
梦谈多话
梦谈多话 2021-01-28 15:54

I\'m trying to execute a batch file \"spoon.bat\" from PENTAHO (pdi-ce-7.1.0.0-12), but there is an error.

Part of batch file where the error is found:

i         


        
相关标签:
2条回答
  • 2021-01-28 16:16

    Generally, don't modify the shell scripts coming with Kettle. You're supposed to set certain environment variables to adapt the scripts to your runtime environment. Look at the top comment section in script set-pentaho-env to learn what's best for your system.

    BTW: The current Java 8 security baseline 8u131 was released in April 2017 - you're way behind that. Also, are you aware of the fact that you are using a 32bit JVM with limited RAM support?

    0 讨论(0)
  • 2021-01-28 16:18

    Where is the environment variable PENTAHO_JAVA referenced?

    It must be referenced with "%PENTAHO_JAVA%" because the string assigned to this environment variable contains characters like a space or &()[]{}^=;!'+,`~. This is explained in help of Windows command interpreter output on running in a command prompt window cmd /? in last paragraph on last help page.

    It is of course also possible to define the environment variable with the necessary double quotes already added, i.e. use:

    if     "%SPOON_CONSOLE%"=="1" set "PENTAHO_JAVA="%ProgramFiles(x86)%\Java\jre1.8.0_121\bin\java.exe""
    if not "%SPOON_CONSOLE%"=="1" set "PENTAHO_JAVA="%ProgramFiles(x86)%\Java\jre1.8.0_121\bin\javaw.exe""
    set "IS64BITJAVA=0"
    call "%~dp0set-pentaho-env.bat"
    

    But this is not recommended. Better would be to use

    if     "%SPOON_CONSOLE%"=="1" set "PENTAHO_JAVA=%ProgramFiles(x86)%\Java\jre1.8.0_121\bin\java.exe"
    if not "%SPOON_CONSOLE%"=="1" set "PENTAHO_JAVA=%ProgramFiles(x86)%\Java\jre1.8.0_121\bin\javaw.exe"
    set "IS64BITJAVA=0"
    call "%~dp0set-pentaho-env.bat"
    

    and reference environment variable PENTAHO_JAVA enclosed in double quotes where it is necessary to specify its value enclosed in double quotes.

    Example:

    @echo off
    rem Get path of latest installed Java directly from Windows registry.
    for /F "skip=1 tokens=1,2*" %%N in ('%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\javaws.exe" /v Path 2^>nul') do if /I "%%N" == "Path" set "PENTAHO_JAVA=%%P" & goto JavaPathFound
    
    rem Path of Java not found in registry, search for 32-bit Java in the default
    rem program files folders of 64-bit and 32-bit Windows and take first found.
    if "%ProgramFiles(x86)%" == "" goto Windows_x86
    for /R "%ProgramFiles(x86)%" %%I in (java*.exe) do set "PENTAHO_JAVA=%%~dpI" & goto JavaPathFound
    :Windows_x86
    for /R "%ProgramFiles%" %%I in (java*.exe) do set "PENTAHO_JAVA=%%~dpI" & goto JavaPathFound
    
    echo Error: Java binary directory not found.
    echo/
    pause
    goto :EOF
    
    :ErrorJavaEXE
    echo Error: File %PENTAHO_JAVA% not found.
    echo/
    pause
    goto :EOF
    
    :JavaPathFound
    if not "%PENTAHO_JAVA:~-1%" == "\" set "PENTAHO_JAVA=%PENTAHO_JAVA%\"
    if "%SPOON_CONSOLE%" == "1" (
        set "PENTAHO_JAVA=%PENTAHO_JAVA%java.exe"
    ) else (
        set "PENTAHO_JAVA=%PENTAHO_JAVA%javaw.exe"
    )
    
    rem Check existence of Java executable to run.
    if not exist "%PENTAHO_JAVA%" goto ErrorJavaEXE
    
    "%PENTAHO_JAVA%" -version
    call "%~dp0set-pentaho-env.bat"
    

    For understanding the used commands and how they work, open a command prompt window, execute there the following commands, and read entirely all help pages displayed for each command very carefully.

    • call /?
    • echo /?
    • for /?
    • goto /?
    • if /?
    • pause /?
    • reg /?
    • reg query /?
    • rem /?

    Read also the Microsoft article about Using Command Redirection Operators for an explanation of 2>nul whereby redirection operator must be escaped in this batch code on FOR command line with caret character ^. And read answer on Single line with multiple commands using Windows batch file for an explanation of & operator.

    0 讨论(0)
提交回复
热议问题