KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Vendredi 16 mai 2008 - 13:30:31

[C] Lancer une commande cmd

Avis / Logiciels Autres avis
Rechercher : dans
[C] Lancer une commande cmd
par Rem's
 Fil de Discussions
Statut : Non résolu
vendredi 19 novembre 2004 à 00:35:31
Bonjour,

Je cherche à coder un petit programme en C qui va executer une commande cmd de type dir, puis récupérer pour l'analyser ce que renvoie la commande. Ici, la liste du répertoire par exemple.

J'avais pensé à shellexecute, mais en fait aparemment ça se contente de lancer la commande dans une fenêtre dos sans rien récupérer...

La je seche, donc si vous avez une idée, je suis preneur.

Merci :)
Répondre à Rem's  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par blurk, le vendredi 19 novembre 2004 à 15:16:00 Fil de Discussions
salut!
pour la commande dir, on peut faire quelque chose

#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
 void scandir(char *dirname)
{
   DIR *dir;
   struct dirent *ent;
 
   printf("premier passage dans '%s':\n",dirname);
   if ((dir = opendir(dirname)) == NULL)
   {
     perror("impossible d'ouvrir le répertoire");
     exit(1);
   }
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
 
   printf("deuxième passage dans '%s':\n",dirname);

   rewinddir(dir);
   while ((ent = readdir(dir)) != NULL)
     printf("%s\n",ent->d_name);
   if (closedir(dir) != 0)
     perror("impossible de fermer le répertoire");
}
 


(j'ai trouvé ça dans borland)
sinon, malheureusement c'est du cas par cas
on peut récupérer les variables d'environement avec

char *getenv(const char *name);



Sous unix / linux il y a plein d'astuces pour récupérer les infos du système.
sous windows, c'est une galère.

cordialement

¤
Répondre à blurk

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Rem's, le dimanche 21 novembre 2004 à 17:49:50 Fil de Discussions
Yes, merci ça marche mais en fait, ce que je voudrais faire exactement c'est pouvoir rediriger la réponse à une commande cmd (dir net ou autre) dans une variable pour pouvoir traiter ensuite la réponse...

Je suis pas sur qu'on puisse le faire avec shellexecute, si vous avez une autre idée...
Répondre à Rem's

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Guki, le dimanche 21 novembre 2004 à 18:10:01 Fil de Discussions
Salut!

En traitant le flux de sortie stdout non?

Du genre:

#include <stdio.h>

system("dir");

/* traitement */


Je dis peut être une bétise. :-P
Répondre à Guki

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Nico, le dimanche 21 novembre 2004 à 22:04:43 Fil de Discussions
Comme GUKI
Je suis d'accord et le mieux est de créer un fichier :

system("dir > FIC.dat");

/* et voilà y a plus qu'à lire FIC.DAT */

A+
Nico.
Répondre à Nico

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par blurk, le dimanche 21 novembre 2004 à 18:59:11 Fil de Discussions
system ("dir") va effectivement lancer la commande dir, mais dans une fenêtre, et tu ne pourra rien récupérer à part 0 si ça s'est bien passé, sinon un code d'erreur.
tout ce qui passe par cmd.exe (ou command.com sous win9x)
va ouvrir une fenêtre "dos" (ou console si WIN>=2000)
et ça ne communique pas avec le prog.
voilà pour quoi chaque commande système nécessite plus ou moins une fonction spécifique
¤
Répondre à blurk

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Guki, le dimanche 21 novembre 2004 à 20:36:26 Fil de Discussions
Pour afficher dans la console il faut bien écrire dans le flux de sortie stdout non?
Répondre à Guki

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Rem's, le dimanche 21 novembre 2004 à 20:28:47 Fil de Discussions
Merci, en fait j'ai trouvé sur msdn tout ce dont j'avais besoin. Ca devrait rouler maintenant :)
Répondre à Rem's

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gogo, le lundi 21 avril 2008 à 22:05:44 Fil de Discussions
bonjour,
je suis debutant et voudrais savoir si c'est possible d'executer un fichier.sh sous windows.
merci
Répondre à gogo

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Char Snipeur, le mardi 22 avril 2008 à 10:02:49 Fil de Discussions 
c'est possible, il faut téléchargé cygwin par exemple. Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur
Répondre à Char Snipeur
Discussions pertinentes trouvées dans le forum
01/04 15h17lancer plusieurs cmd avec 1 seule R-commandeLinux/Unix02/04 12h324
26/02 10h37[C ] lancer une commande systemeProgrammation26/02 10h411
17/09 20h51Lancer commande en root au démarrage de linuxLinux/Unix21/01 11h417
20/02 01h51Commande Ping dans cmd - HELPRéseaux20/02 17h2212
Plus de discussions sur « [C] Lancer une commande cmd » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide