Bonjour,

J'ai un programme sous format de deux fichier ".bat" et je veux l'exécuter à travers une application Java. Les détails des deux fichiers (setgen.bat et XMLGenerator.bat) sont les suivants:

1. Fichier "setgen.bat":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
@echo off
echo this release was tested with JDK 1.2, XML4Java 2_0_15.
if "%xmlgen-root%" == "" for /f %%f in ('cd') do set xmlgen-root=%%f
if "%xmlgen-classpath%" == "" set xmlgen-classpath=%classpath%
set classpath=%xmlgen-root%\XMLGenerator.jar;%xmlgen-root%\xml4j.jar;%xmlgen-root%\DDbe.jar;%xmlgen-root%\jfaceall.jar;%xmlgen-classpath%
if "%xmlgen-savedpath%" == "" set xmlgen-savedpath=%path%
set path=%xmlgen-root%;%xmlgen-savedpath%
echo Your classpath is %classpath%
2. Fichier "XMLGenerator.bat":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
@echo off
if ""=="%xmlgen-root%" goto fail
java com.ibm.XMLGenerator.XMLGenerator %1 %2 %3 %4 %5 %6 %7 %8 %9
goto done
:fail
echo please run setgen.bat from the install directory.
:done
Le premier fichier a pour but de définir certaines variables d'environnement qui sont utilisées par le deuxième. Le deuxième lance un certain fichier jar. Sous un terminal, je lance setgen.gat et puis XMLGenerator param_1 param_2....param_n et ça s'exécute sans aucun problème.

Par contre je ne sais pas comment faire exécuter ces deux fichiers en utilisant un programme java.

J'ai essayé avec le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
private void executeCommand(String directory){
try {
     //Execution du premier fichier.
     File dir = new File(directory);
     Process p = Runtime.getRuntime().exec("cmd /c setgen", null, dir); 
     p.waitFor();
     BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
     String line1=reader.readLine();
     while(line1 != null){
           System.out.println(line1);
           line1=reader.readLine();
     }
 
     //Execution du deuxième fichier.
     p = Runtime.getRuntime().exec("cmd /c XMLGenerator param1 param2", null, dir); 
     p.waitFor();
     reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
     line1=reader.readLine();
     while(line1 != null){
           System.out.println(line1);
           line1=reader.readLine();
     }
} catch (Exception ex){
       System.err.println("Error: "+ex.getMessage());
}
    }
Après l'exécution de cette méthode j’obtiens le message d'erreur: "please run setgen.bat from the install directory.", puisque chacun des deux fichier s'exécute dans un terminal différent de l'autre, et donc les variables d'environnement crées par le premier fichier ne sont plus utilisées par le deuxième, donc ce sont deux processus différents et indépendant ce qui n'est plus le cas du terminal où les variables crées peuvent être utilisées tant que le terminal est encore ouvert.

Y a t-il une astuce pour combiner les deux fichiers ensemble ? ou pour les exécuter dans un même processus ?

Merci d'avance.