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

C++ Discussion :

Entrer des commandes dans une CMD


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut Entrer des commandes dans une CMD
    Bonjour, je souhaiterai savoir comment on peut faire pour entrer des commandes dans une CMD
    J'm'explique : le programme C(++) ouvre une CMD et ce même programme entre "EXIT" par exemple (pour fermer la CMD)
    comme si on le faisait directement avec le clavier...

    pour ouvrir une CMD j'utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("CMD.EXE");
    mon code générale donerai grosso modo un truc dans le genre...
    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
     
    #include <iostream>
    #include <stdlib.h>
    #include <string.h>
    #include <string>
    #include <sstream>
     
    void sendCOM(string fermer){
    ...   // et là, je bloque
    }
     
    int main(){
      std::string fermer = "exit";  //création de la commande "exit"
      system("CMD.EXE");   // ouverture de la CMD
      sendCOM(fermer);     // fonction qui devrai envoyer la commande dans la CMD
      cout << endl;
      system("PAUSE");	
      return 0;
      exit(0);
    }
    Je vous remercie d'avance et dès que le problème est résolu, je mettrait tout le code en ligne pour que tout le monde en proffite... enfin, si ça intéresse quelqu'un.

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Pourquoi ne pas appeler directement les commandes par :

    system("commande");

    ????

  3. #3
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Je crois comprendre ce que tu veux et non c'est pas possible comme cela... on ne peux passer des commandes à un programme que tu viens de lancer, en tout cas avec cette méthode...

    Sinon comme mtopoloff appeler directement system("commande");

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    vous pouvez me donner un exemple que je vois svp... car là, c'est assez flou pour moi...

    Merci d'avance

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Totalement incompréhensible , dialogue de sourd ;

    Peut on avoir des réponses PRECISES sur :
    le but de l'application, à quoi elle sert
    est-elle destinée à s'exécuter en mode texte et arguments ligne de commande ?

    Le seul moyen de passer des commandes à un prgrm c'est passer des arguments ; encore faut-il qu'il soit conçu pour traiter les arguments passés en paramêtres ( ce qu'on passe à main() )

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    bien, alors je vais essayer d'être plus précis :
    mon programme lance une CMD (avec un prompt c:\...\>)
    je voudrai que ce même programme entre dans cette CMD les commandes suivantes :
    TIME h:min:sec (h, min et sec étant des variables du program. ce qui permet de synchroniser l'heure windows avec le temps voulu)
    exit (ce qui permet de fermer la CMD)

    or pour ouvrir la CMD, j'utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("CMD.EXE");
    Maintenant le problème est :
    "COMMENT ENTRER LES COMMANDES CI-DESSUS DANS LA CMD FRAÎCHEMENT OUVERTE ?"

    Maintenant, si vous me conseillez une autre manière pour ouvrir la CMD et pour y travailler dedans de manière plus simple, je suis à l'écoute de toutes éventualitées (mais essayer de le complèter d'un exemple pr une meilleure compréhention, merci)

    Sur ce, j'espère avoir été plus explicite et j'attend vos réactions. Merci.

    Car mon but dans tout ça est de synchroniser l'heure de windows avec un code en C(++) avec l'heure, les minutes et les secondes étants des INT, le reste après m'importe peux.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system( "TIME h:min:sec" );

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system( "TIME h:min:sec" );
    --> l'idée est excellente... mais y'a un hic :
    lors de l'exécution, il y a ce message :
    Le système ne peut pas accepter l'heure entrée.
    Entrez la nouvelle heure*: 16:54:06 (et là, c'est moi qui ai rentré ces valeurs)
    Alors que je voudrais que ce soit automatique...

    Je ne comprend pas pourquoi il met qu'il ne peut accepter l'heure entrée... : : :

    en tout cas, merci pour cette fonction que je ne connaissait pas.


    => En fait : h, min, sec sont des int
    or dans la fonction ils sont entres " est-ce que le problème est dû à ça ??

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    j'ai cherché différentes manières pour résoudre ce problème... mais j'm'en retrouve au même résultat : lol
    sérieusement, j'ai essayer de transformer la chaine composée de char et de int en une chaine string (un tableau, quoi) et de le metre à la place de ce qu'il y a entre les "... ça donnait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
      int h=12, min=00, sec=00;    //j'impose midi pour l'explication
      std::ostringstream oss; 
      oss << "TIME " << h << ":" << min << ":" << sec; 
      std::string commande = oss.str();
      cout << commande << endl;   // affiche "TIME 12:00:00"
      system(commande);
    et donc ça, ça ne fonctionne pas

    ou j'ai encore essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
      system("TIME "h":"min":"sec);
    ...
    mais là encore, le compilateur me fait la tronche !!!


    aidez moi s'il vous plaît !!

  10. #10
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Arf un coup de C pour t'aider !
    Mais attention à ne pas faire n'importe quoi sur les entiers contenus, dans tes int....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #define TIME_STRING "TIME %d:%d:%d"
    ...
        int h(12);
        int min(0);
        int sec(0);
        ....
        // %d == 2 caractères qui seront remplacé par les int
        char *ts_result = new char[strlen(TIME_STRING)];
     
        sprintf(ts_result,TIME_STRING,h,min,sec);
        system(ts_result);
        ...
        // attention à ne pas dépasser 2 chiffres pour les variables int
    Désolé pour les puristes C++
    Je veux bien voir une version C++ pour voir si c'est aussi court
    Voila

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Plus court, plus sécurisé, et sans fuite de mémoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int h(12); 
    int min(0); 
    int sec(0); 
     
    std::ostringstream oss;
    oss << "TIME " << h << ':' << min << ':' << sec;
    system( oss.str().c_str() );
    en tout cas, merci pour cette fonction que je ne connaissait pas.
    je n'ai fait qu'adapter ton propre exemple:
    pour ouvrir la CMD, j'utilise la fonction

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    je n'ai fait qu'adapter ton propre exemple
    je ne savais pas que l'on pouvait lui mettre directement la commande ainsi....
    En tout cas merci quand même, car ça m'aide.

    et pour ton code : il est magnifique !!!
    méga MERCI

    dois-je mettre mon code pour en faire proffiter tout le monde ??

  13. #13
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    system invoque l'interpréteur de commande avec la commande qui lui est donnée:
    http://www.cplusplus.com/ref/cstdlib/system.html
    dois-je mettre mon code pour en faire proffiter tout le monde ??
    si tu l'as modifié, c'est sympa oui de donner la solution.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Bon, ben voilà le code au complet (et tout ça pour modifier l'heure windows ) :

    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
    28
    29
    30
    31
    32
    33
    34
    #include <iostream>
    #include <stdlib.h>
    #include <string.h>
    #include <string>
    #include <sstream>
     
    int main(){
      cout << "******************************************************************\n";
      cout << "*                 Synchroniser l'horloge windows                 *\n";
      cout << "******************************************************************\n";
     
      // déclaration des variables
      int h, min, sec;
     
      // questionnaire
      cout << endl << "Entrer les heures : ";
      cin >> h;
      cout << "Entrer les minutes : ";
      cin >> min;
      cout << "Entrer les secondes : ";
      cin >> sec;
      cout << endl;
      cout << "Il est : " << h << ":" << min << ":" << sec << endl;
     
      // fonction qui impose l'heure
      std::ostringstream oss; 
      oss << "TIME " << h << ':' << min << ':' << sec;
      system( oss.str().c_str() );
     
      cout << endl;
      system("PAUSE");	
      return 0;
      exit(0);
    }
    voilà... j'espère que ça aidera quelqu'un un jour.

  15. #15
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    à remplacer par


  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    ok!!
    merci du conseil
    et pis à une prochaine fois peut être...

  17. #17
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    C'est juste pour modifier l'heure
    SetSystemTime ou un .bat qui lance TIME c'était plus simple...
    http://msdn.microsoft.com/library/en-us/sysinfo/base/setsystemtime.asp

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/08/2010, 11h58
  2. Entrer des données dans une structure
    Par S0liman dans le forum Débuter
    Réponses: 4
    Dernier message: 05/01/2010, 16h03
  3. Entrer des valeurs dans une textbox et empecher certaine !
    Par 0nn2belle dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/05/2009, 14h03
  4. lancer des commandes dans une session telnet
    Par nidou01 dans le forum Linux
    Réponses: 0
    Dernier message: 03/03/2009, 09h05
  5. Entrer des données dans une table
    Par orlacit dans le forum Modélisation
    Réponses: 8
    Dernier message: 05/11/2007, 13h15

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