Executer un .bat depuis un code C

inpt2010 Messages postés 1 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

???
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
  2. inpt2010
     
    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
  3. OpTyMyZeR Messages postés 49 Statut Membre 11
     
    En général on fait sa :

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

    et sa marche.
    0
    1. inpt2010
       
      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
  4. inpt2010
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. frençois
     
    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