lancer cmd.exe

Gefrey
lancer cmd.exe

salut,

J'essay de lancer cmd.exe et de faire une ipconfig avec les instructions suivantes:
Runtime runtime = Runtime.getRuntime();
String[] cmd={"C:\\WINDOWS\\system32\\cmd.exe","ipconfig"};
Process p = runtime.exec(cmd,null,null );
seulement la commande ne se lance pas.
Y a t'il d'autres moyen de la lancer?
Merci

fredericmazue

Tiens te revoilà ?

Bon tu fais un effort de courtoisie semble-t-il alors je vais te répondre et on verra ce que ça donne.

1) non il n'y a pas d'autre moyen de lancer une command externe
2) c'est normal que ça ne marche pas, la ligne de commande est mal formée. Il faudrait:

 String shell="cmd.exe /c ipconfig";
Process proc=Runtime.getRuntime().exec(shell)

note bien le /c

3) Pas besoin de passer un tableau de chaînes dans un cas aussi simple.

4) Si tu fais comme je te dis, la commande va se lancer, mais ça risque de planter derrière pour des raisons de saturation de tampons. C'est tout un art de lancer un exec depuis Java, et c'est même une FAQ. J'y ai répondu moult foult sur ce forum. Par exemple
http://www.programmez.com/forum/viewtopic.php?t=455

5) mais bon ip config renvoyant peu de données, ça marchera peut être quand même :)

6) comme tu ne passes aucun paramètre à ipconfig j'en déduis que tu veux seulement lire la configuration réseau. C'est possible de le faire en Java sans lancer de commande externe. Ce serait une meilleure méthode car lancer ipconfig n'est pas portable.

Gefrey

Ok
j'ai fait de la maniere suivante:
Runtime runtime = Runtime.getRuntime();
String[] cmd={"cmd.exe","/C ipconfig "};
Process p = runtime.exec(cmd,null,null );
le probleme c'est que je ne vois pas la fenetre s'ouvrir.
Ca doit etre le truc de saturation ou je peux trouver l'article 82 je pense que ca resoudrait mon probleme.
Merci

fredericmazue

Quote:
j'ai fait de la maniere suivante:

Je vois que tu as la tête dure... je t'avais dit:

 String shell="cmd.exe /c ipconfig"; 
Process proc=Runtime.getRuntime().exec(shell);

J'insiste lourdement, j'ai mes raisons.

Quote:
le probleme c'est que je ne vois pas la fenetre s'ouvrir.

Mais qui a dit que tu dois voir une fenêtre s'ouvrir ?
Si tu ne lances pas depuis une console tu vas avoir des surprises....
Et si tu lances depuis une console tu vas avoir des surprises aussi...parce que le flux émis par la commande lancée est de toutes façons capturé par la JVM et c'est à ton programme de le lire dans le InputStream du Process démarré. Sinon tu ne verras rien du tout "dans la fenêtre" comme tu dis.
Donc:
Quote:
Ca doit etre le truc de saturation

Non on en est pas encore là :)
Quote:
l'article 82 je pense que ca resoudrait mon probleme

Article 82 ? connais pas.
Ce que je connais est l'article "Lancer des processus depuis la machine virtuelle Java" dans Programmez! 82, le magazine papier.
Si tu as ou te procures ce magazine, ton problème sera résolu :)

MAIS, j'insiste à nouveau. Tu veux lancer ipconfig. Pourquoi faire ? Je parie assez volontiers que ce que tu veux obtenir avec ipconfig, tu peux l'obtenir plus facilement en Java pur. Je te l'ai déjà dit une fois, mais tu n'écoutes pas volontiers.... Du coup je crains que tu ne sois pas au bout des difficultés. Enfin c'est toi qui voit le mieux pour toi :)