環境變量PENTAHO_JAVA
在哪裏引用?
它必須與"%PENTAHO_JAVA%"
引用,因爲分配給此環境變量的字符串包含字符,如空格或&()[]{}^=;!'+,`~
。這在Windows命令解釋器輸出的幫助下在最後一個幫助頁上的最後一段的命令提示符窗口cmd /?
中運行。
當然,也有可能與已經添加了必要的雙引號,即使用定義環境變量:
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"
但不建議這樣做。更好的辦法是使用雙引號括起來的地方,需要指定其值在雙引號中
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"
和參考環境變量PENTAHO_JAVA
。
例子:
@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"
對於理解使用的命令以及它們如何工作,打開命令提示符窗口中,執行有下面的命令,並閱讀完全針對每個命令非常仔細地顯示所有幫助頁面。
call /?
echo /?
for /?
goto /?
if /?
pause /?
reg /?
reg query /?
rem /?
閱讀也是微軟文章的2>nul
的解釋,從而重定向操作人員必須在此批代碼逃走FOR與插入符號^
命令行約Using Command Redirection Operators。並閱讀關於Single line with multiple commands using Windows batch file的解答&
運營商的解釋。
總是用引號將變量名和變量內容括起來,其中有空格'set「pentho_java = C:\ programfiles(x86)\ ... \ java.exe」'也是'>'和'<'是重定向輸出和輸入。 – elzooilogico
你的結論是錯誤的,一個路徑只在cmd.exe視圖的調用語句中引用。另一個只是變量 - 最後一個命令包含錯誤的重定向符號。 – LotPings
嗨elzooilogico。這種方式不起作用。 –