Executer un .bat depuis un code C

Fermé
inpt2010 Messages postés 1 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 19 juillet 2008 - 19 juil. 2008 à 13:58
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 21 juil. 2008 à 01:46
Bonjour tout le monde ,

voila je veux lancer un batch depuis mon code C , j ai utiliser les commandes :
winexec()
shellexecute()
et system()
MAIS le meme probleme persiste :
mon batch est supposé faire une redirection vers un fichier (il dois ecrire des trucs dedan
"chose qu il satisfait a merveil en double click ")
cependant avec les commandes deja cité il ne touche pas au fichier
a signaler que IL S EXECUTE puisque dans une partie il affiche des trucs au console ()
le probleme alors c est que seule la partie de redirection ne marche pas avec ces commandes

???
A voir également:

6 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 juil. 2008 à 14:10
Le problème c'est qu'une redirection vers un fichier est interprétée par un shell mais n'a pas de sens en C.

Sinon à la place des fonctions winexec() (pas standard), shellexecute (pas standard), system (pas propre), essaye plutôt d'utiliser execve() ou execvp().
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/execvp.3.html

Pour moi la bonne manière de faire ce serait plutôt d'utiliser popen() et pclose(), mais je ne sais pas si ça marchera mieux.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/popen.3.html

Bonne chance
1
merci pour votre reponse
mais j arrive toujours pas a l executer , j ai essayer les commandes :
execl, execle, execlp, execv, execve, execvp et exect
mais c est encore pire mon batch n affiche meme rien au console (naturellement le fichier n est pas touché)
pour popen et pclose j ai pas su comment les utiliser
0
OpTyMyZeR Messages postés 49 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 7 septembre 2009 11
20 juil. 2008 à 17:13
En général on fait sa :

system("C:\\File.bat"");

et sa marche.
0
c est justement se que je faisais le probleme c est que l execution se fait mais le fichier n ai pas touché
mon batch est supposé ecrire dans un fichier mais il ne le fais pas en l executant depuis C
0
merci pour votre reponse
mais j arrive tjr pas a le faire , j ai testé les commandes :
execl, execlp, execle, execv, execvp mais c est encore pire : meme la console n affiche rien
pour popen et pclose j ai pas su comment ca marche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Il ne faut pas utiliser system() (jamais sous Windows)
Ca se fait avec les apis win32 standards
Demander sur le newsgroup professionnel des apis win32 :
news://194.177.96.26/fr.comp.os.ms-windows.programmation
où cela a souvent été discuté...
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 juil. 2008 à 01:46
Pour popen et pclose il suffit de lire le man (je t'ai donné le lien) et de chercher un exemple sur google.
https://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html

Bonne chance
0