2017-06-14 1 views
-1

J'essaye d'exécuter un fichier batch "spoon.bat" de PENTAHO (pdi-ce-7.1.0.0-12), mais il y a une erreur.Le système ne trouve pas le chemin spécifié (fichier batch) - Utilisation du chemin avec des espaces blancs - PENTAHO spoon.bat (pdi-ce-7.1.0.0-12)

Une partie du fichier batch où l'erreur se trouve:

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

Mais je reçois immédiatement au-dessous d'erreur:

The system cannot find the path specified 

L'erreur est quand je suis en train d'affecter le chemin où java. exe ou javaw.exe sont trouvés à "PENTAHO_JAVA".

J'ai modifié le chemin avec le guillemet double, mais ne fonctionne pas; et aussi j'ai modifié comme:

if "%SPOON_CONSOLE%"=="1" set "PENTAHO_JAVA=C:\<Program Files (x86)>\Java\jre1.8.0_121\bin\java.exe" 

Toute idée de comment déclarer pour y remédier?

+0

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

+0

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

+0

Salut elzooilogico. Cette façon ne fonctionne pas. –

Répondre

1

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.

0

Généralement, ne modifiez pas les scripts shell fournis avec Kettle. Vous êtes supposé définir certaines variables d'environnement pour adapter les scripts à votre environnement d'exécution. Regardez la section des commentaires dans le script set-pentaho-env pour savoir ce qui est le mieux pour votre système.

BTW: La ligne de base actuelle de sécurité Java 8 8u131 a été publié en Avril 2017 - tu es bien derrière cela. Etes-vous conscient du fait que vous utilisez une JVM 32 bits avec un support RAM limité?