Où est la variable d'environnement PENTAHO_JAVA
référencée?
Il doit être référencé avec "%PENTAHO_JAVA%"
car la chaîne affectée à cette variable d'environnement contient des caractères tels qu'un espace ou &()[]{}^=;!'+,`~
. Ceci est expliqué à l'aide de la sortie de l'interpréteur de commandes Windows lors de l'exécution dans une fenêtre d'invite de commande cmd /?
dans le dernier paragraphe de la dernière page d'aide.
Il est bien sûr également possible de définir la variable d'environnement avec les guillemets nécessaires déjà ajoutés, à savoir l'utilisation:
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"
Mais ce n'est pas recommandé. Il serait préférable d'utiliser
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"
et l'environnement de référence variable PENTAHO_JAVA
entre guillemets où il est nécessaire de préciser sa valeur entre guillemets.
Exemple:
@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"
Pour comprendre les commandes utilisées et comment ils fonctionnent, ouvrez une fenêtre d'invite de commande, exécutez les commandes suivantes il, et lire entièrement toutes les pages d'aide affichées pour chaque commande très attentivement.
call /?
echo /?
for /?
goto /?
if /?
pause /?
reg /?
reg query /?
rem /?
Lire aussi l'article Microsoft à propos Using Command Redirection Operators pour une explication de 2>nul
par lequel l'opérateur de redirection doit être échappé dans ce code de lot sur FOR ligne de commande avec caret ^
. Et lire la réponse sur Single line with multiple commands using Windows batch file pour une explication de &
opérateur.
toujours placer entre guillemets le nom variable et son contenu où sont des espaces 'set "pentho_java = C: \ Program Files (x86) \ ... \ java.exe"' 'aussi>' et '<' sont la sortie de redirection et entrée . – elzooilogico
Votre conclusion est fausse, un chemin est seulement référencé dans l'instruction d'appel du point de vue cmd.exe. Les autres ne sont que des variables. La toute dernière commande comporte des symboles de redirection incorrects. – LotPings
Salut elzooilogico. Cette façon ne fonctionne pas. –