Rechercher : dans
Par :

[C] Lancer une commande cmd

Dernière réponse le 30 jui 2008 à 14:23:05 Rem's, le 19 nov 2004 à 00:35:31 
 Signaler ce message aux modérateurs

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 :)

Meilleures réponses pour « [C] Lancer une commande cmd » dans :
Liste des commandes Windows VoirRemarques : Certaines commandes sont dangereuses (l’exemple de SYSKEY) et peuvent causer des problèmes pouvant conduire au formatage. D’autres commandes ne sont pas exécutables sous Windows XP ou des versions antérieures, je ne les ai pas...
Se logguer à distance avec ssh (Linux) Voir(Pour ceux qui voudraient avoir un rappel sur SSH : http://www.commentcamarche.net/crypto/ssh.php3) Les commandes suivantes nécessitent d'avoir un compte sur la machine sur laquelle on veut se connecter et qu'un serveur SSH y soit installé. ...
[Linux] Gestion des attributs de fichiers sur ext2 Voirlsattr - chattr Introduction lsattr chattr Les attributs -A -S -a -c -D -d -I -i -j -s -T -t -u -E -X -Z Introduction Il existe pour le système de fichiers Second Extended Filesystem (ext2) donc également pour le Third...
Cmd - cmd.exe Voircmd - cmd.exe Le processus cmd.exe (cmd signifiant Windows Command Prompt) est un processus générique de Windows NT/2000/XP ouvrant une console en mode texte permettant de lancer des applications à l'aide de commandes. Le fichier correspondant...
Les commandes AS/400 VoirLes commandes de l’AS/400 Il existe environ un millier de commandes dans l'OS/400, regroupées sous le nom de « Langage de Contrôle ». Un utilisateur pourra les lancer depuis la ligne Option ou Commande située au bas de l'écran, quand celle-ci est...
Utilisation de Telnet VoirPrésentation de Telnet Telnet est un protocole permettant d'émuler un terminal à distance, cela signifie qu'il permet d'exécuter des commandes saisies au clavier sur une machine distante. L'outil Telnet est une implémentation du protocole...

1

blurk, le 19 nov 2004 à 15:16:00
  • +2

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

Rem's, le 21 nov 2004 à 17:49:50

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

Guki, le 21 nov 2004 à 18:10:01

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

Nico, le 21 nov 2004 à 22:04:43

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

blurk, le 21 nov 2004 à 18:59:11

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

Guki, le 21 nov 2004 à 20:36:26

Pour afficher dans la console il faut bien écrire dans le flux de sortie stdout non?

Répondre à Guki

5

Rem's, le 21 nov 2004 à 20:28:47

Merci, en fait j'ai trouvé sur msdn tout ce dont j'avais besoin. Ca devrait rouler maintenant :)

Répondre à Rem's

10

 dahoo, le 30 jui 2008 à 14:23:05

Salut, j'ai exactement le même problème que tu viens de résoudre. Tu peux expliquer comment tu as fait s'il te plait?

Merci,

David.

Répondre à dahoo

8

gogo, le 21 avr 2008 à 22:05:44

Bonjour,
je suis debutant et voudrais savoir si c'est possible d'executer un fichier.sh sous windows.
merci

Répondre à gogo

9

Char Snipeur, le 22 avr 2008 à 10:02:49

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