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

  • Votes
  • Date
  • Date décroissante
  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. 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
      1. En général on fait sa :

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

        et sa marche.
        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
      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
        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é...