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. 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
    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
      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 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. 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