Execution d'une commande à partir de JAVA [Résolu]

Messages postés
5
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
24 novembre 2010
- - Dernière réponse : boniteprobtp
Messages postés
5
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
24 novembre 2010
- 2 juil. 2010 à 07:48
Je souhaite dézipper un ensemble de fichiers .zip se trouvant dans un répertoire tout en lui affectant un nom avec le même prefixe mais en le suffixant .txt
Voici mon code qui semble ne pas fonctionner :

package outils;
import java.io.*;
public class testWinrar {
public static void main(String[] args) {
extraire() ;
}
public static void extraire() {
Runtime r = Runtime.getRuntime() ;
String msg = "" ;
int i = 0 ;
String repertoire = "D://DVEFTP" ;
File path = new File(repertoire) ;
String[] listRepertoire ;
String[] listModule ;
listRepertoire = path.list() ;
String zip = "" ;
String fic = "" ;
String cmd = "" ;
try {
for (i 0 ; i < listRepertoire.length; i++) { zip listRepertoire[i] ;
if (zip.endsWith(".ZIP")) {
fic = zip.substring(0, zip.length()-3) + "DON" ;
msg="Fichier .ZIP : "+zip+" ===> .DON : "+fic ;
System.out.println(msg) ;
cmd = "C://Dossiers//7za.exe -so "+zip+" > "+fic ;
System.out.println(cmd) ;
Process p = r.exec(cmd) ;
p.waitFor() ;
}
}
} catch (Exception e) {
System.out.println("erreur " + cmd + e.toString());
}
}
}

Le résultat :

Fichier .ZIP : N0180.ZIP ===> .DON : N0180.DON
C://Dossiers//7za.exe -so N0180.ZIP > N0180.DON
Fichier .ZIP : N0248.ZIP ===> .DON : N0248.DON
C://Dossiers//7za.exe -so N0248.ZIP > N0248.DON

mais rien n'a été éxécuté ???

Quelqu'un pourrait-il m'aider ? Merci
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
5
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
24 novembre 2010
3
Merci
Je te remercie tout de même de ton aide, la seconde réponse m'apparait comme étant plus constructive.

Cependant, je maintiens que le double slash entre double croche est considéré comme un anti slash (exemple
public static String serveurCommun = "C://Dossiers//Communs" ;
est bien interprété comme C:\Dossiers\Communs)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de boniteprobtp
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
0
Merci
Salut,

C'est normal de mettre "//" au lieu de "/"?
Tu as regardé le exitValue() du process?

Jonathan
Commenter la réponse de cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
0
Merci
Tu peux aussi lire les différents flux associés au process -> getInputStream() pour lire la sortie standard et getErrorStream() pour lire la sortie d'erreur.
Commenter la réponse de cs_jojolemariole
Messages postés
5
Date d'inscription
jeudi 1 juillet 2010
Statut
Membre
Dernière intervention
24 novembre 2010
0
Merci
Le double / a pour utiliter d'être pris pour un \ lors de l'execution.

Ou dois-je regarder l'exitValue de Process ???????

Qu'est censé me donner le getInputStream() et le getErrorStream() dans ma procedure ????

Le problème n'est pas dans la constitution du .bat qui fonctionne très bien mais dans l'appel du .bat à la fin de ma procédure.

Aussi, ce que je recherche c'est une solution et non des remarques anodines et non constructives.

Merci tout de même
Commenter la réponse de boniteprobtp
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
21
0
Merci
Tu te plantes, tu dois mettre "\" qui est interprété comme le caractère antislash, 2 slash ça reste 2 slash.

Ou dois-je regarder l'exitValue de Process ???????

Qu'est censé me donner le getInputStream() et le getErrorStream() dans ma procedure ????

> javadoc...

Aussi, ce que je recherche c'est une solution et non des remarques anodines et non constructives.

> sympa.

Sinon,

http://ydisanto.developpez.com/tutoriels/j2se/runtime/

Allez, ciao et ne compte plus sur moi!
Commenter la réponse de cs_jojolemariole