Executer un .bat depuis un code C

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. 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
    1. 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
      1. En général on fait sa :

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

        et sa marche.
        0
        1. 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
      2. 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
        1. Modérateur
          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