Execution d'une application externe

cs_chams16 Messages postés 8 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 1 mars 2012 - 1 janv. 2012 à 15:00
cs_chams16 Messages postés 8 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 1 mars 2012 - 3 janv. 2012 à 00:29
bonjour a tous j'ai un petit soucis avec l'execution d'un .bat depuit mon programme java
j'arrive a lancer l'executable
mais le soucis et que je dois faire entrer des parametres pour la suite du processus et j'ai essayer presque tous voici le programme

String[] com={"C:/cygwin/Cygwin.bat ","ls"};
Process p = rt1.getRuntime().exec(com);
// Process P1=rt1.getRuntime().exec("cmd /c ls");
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}

apres .bat il me faut lancer dans le meme processus "ls "

ça serrai tres aimable a vous de m'aider sur ce point
merci

6 réponses

Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
1 janv. 2012 à 19:57
Salut,

Sachant que la commande 'ls' est exécutée par le cygwin et non en argument à cygwin il faut voir le problème différemment. soit en utilisant pleinement les flux proposés par le retour de la commande exec.
En gros ton ls devrait être fait via la méthode getOutputStream proposée par Process.





------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
2 janv. 2012 à 08:07
Bonjour,

Déjà, il y a une chose que je ne comprend pas : tu utilises un .bat (windows) et tu veux faire un ls (linux ou unix) ? Sous quel OS es tu ? Tu n'utilises pas une cochonerie du genre SUA ?

Ensuite, si tu veux lister des fichiers, tu peux le faire directement en java sans passer par une commande.
0
cs_chams16 Messages postés 8 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 1 mars 2012
2 janv. 2012 à 12:04
pour julien

oui tu as raison c un programme linux mais je me suis arranger il s’exécute sur Windows
je l’exécute via nutch manuellement la commande marche sans soucis
mnt le principe c que je lance .bat depuis mon application pour utiliser ses services pour des traitements avec des lignes de commande avec et puis j'ai pas trop compris le principe de lister les fichiers
0
cs_chams16 Messages postés 8 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 1 mars 2012
2 janv. 2012 à 12:08
a twinuts
je vais essayer a ta solution je répondrai
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
2 janv. 2012 à 16:30
File dossier = new File("C:\\Documents and Settings\\Utilisateur\\dossier1");
dossier.list();


Te retourne un tableau contenant tous les noms des fichiers du répertoire.
0
cs_chams16 Messages postés 8 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 1 mars 2012
3 janv. 2012 à 00:29
jai essayer ça toujours rien

String cmd="cmd /c cmd.exe /k "cd c:\\cygwin";

Runtime r;
r = Runtime.getRuntime();
Process p = r.exec(cmd);

OutputStream os=p.getOutputStream();
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(os, "UTF8"));
wr.write("Cygwin.bat < ls\n");
wr.flush();
os.flush();




System.out.println("sousou");

BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
System.out.println("Done.");
}
catch (Exception err) {
err.printStackTrace();
}
0