IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[API][Système] Executer une commande dos avec arguments


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut [API][Système] Executer une commande dos avec arguments
    Bonsoir,

    Voila pour sauvegarder une base de données sql via l'application que je suis entrain de developper j'ai besoin d'exectuer une commande dos avec plusieurs arguments :

    Voici la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump.exe -u root --password=rootroot --host=192.168.0.2 --opt pressing > save.sql
    J"ai essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String[] command = new String[] {Chemin+"mysqldump.exe", "-u root", "--password=rootroot", "--host=192.168.0.2", "--opt pressing > "+dateFormat.format(date)+".sql"}; 
     
          Process child = Runtime.getRuntime().exec(command);
    Petites precisions :
    dateFormat.format(date) me donne la date actuelle, le fichier mysqldump.exe se trouve bien dans le bon repertoire.

    Mais la commande ne s'execute pas, aucune erreurs n'est detectées, et aucun fichier n'est créer.
    Merci pour votre aide

  2. #2
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Essaye de taper cette ligne de commande dans une fenetre DOS, et affiche celle que tu lances par Java et regarde les différences, ca peut t'aider a debuguer.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  3. #3
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    deja fait ^^ merci qd meme

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Chaque éléments du tableau correspond à un paramètre, et l'option -u root doit correspondre à deux paramètres, sinon cela revient à taper la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump.exe "-u root" --password=rootroot --host=192.168.0.2 "--opt pressing" > save.sql
    Tu dois donc "découper" ces chaines en deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String[] command = new String[] {
    	Chemin+"mysqldump.exe",
    	"-u",
    	"root",
    	"--password=rootroot",
    	"--host=192.168.0.2",
    	"--opt",
    	"pressing"};

    Ensuite tu ne peux pas utiliser le > pour rediriger le flux de sortie, car cela correspond à une option du shell et non pas à l'exécution du programme (grosso-modo dans le shell >save.sql n'est pas passé au programme mais interprété par le shell qui redirige le flux avant l'appel du programme).

    Tu dois donc fair quelque chose de similaire dans ton programme Java en redirigeant la sortie de ton programme (child.getInputStream()) vers un fichier.

    Ce qui pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	Process child = Runtime.getRuntime().exec(command);
    	new Thread() {
    		public void run() {
    			dumpStreamAndClose(process1.getErrorStream(), System.err);
    		}
    	}.start();
    	dumpStreamAndClose (child.getInputStream(), new FileOutputStream(dateFormat.format(date)+".sql"));
    Tu trouvera la méthode dumpStreamAndClose() (ainsi qu'une explication plus détaillé sur les problème que peux engendrer l'appel de programme et la raison du thread) dans le post suivant :
    http://www.developpez.net/forums/vie...570460#2570460

    a++

  5. #5
    Nouveau membre du Club
    Profil pro
    developeur
    Inscrit en
    Août 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : developeur

    Informations forums :
    Inscription : Août 2004
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    super merci beaucoup pour tes informations je cogite tout ca ce week end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer une commande DOS avec guillemets
    Par doons dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2015, 17h02
  2. Executer une commande DOS || avec un autre language.
    Par Yamuto dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/07/2013, 16h14
  3. [PowerBuilder] Executer une commande DOS sous PB
    Par Deedoo2000 dans le forum Powerbuilder
    Réponses: 3
    Dernier message: 09/08/2006, 15h54
  4. executer une commande dos a partir d'une page WEB
    Par wagga84 dans le forum Langage
    Réponses: 1
    Dernier message: 15/03/2006, 11h09
  5. [Debutant(e)][Système]Executer une commande DOS
    Par iceman dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 18/05/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo