IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compilation de fichier .bat


Sujet :

C

  1. #1
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut Compilation de fichier .bat
    Attendez Ne criez pas tout de suite Je sais bien que le bat ne se compile pas, c'est pour cela que je vous demande si vous avez des solutions pour créer un exe à partir du bat, je veux dire si par exemple le bat contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CLS
    ECHO Mon texte a l'ecran
    Si on pourrait pas faire en sorte de créer un exe qui fasse cela ?

    En fait j'ai une solution mais je sais pas si elle correcte, ce serait de convertir des commandes dos en C puis de les compiler, en fait je crée un logiciel qui permet de developper son propre logiciel en francais, c'est très rudimentaire mais ca peut etre une base pour des débutants

    Merci d'avance

  2. #2
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    je voit pas trop l'utilite de la chose mais enfin bon...
    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("maCommandeDos");
    permet d'appeler une commande dos depuis le C.
    un .bat ne contenant que des commandes dos, tu peux faire un petit prog qui cree un fichier C ne contenant que des appels a cette fonction system(); en donnant comme parametre chaque ligne de ton .bat (et donc autant d'appel a system qu'il y a de ligne dans ton .bat)
    ensuite tu compiles ton .c et tu obtiens ton .exe

    pour ton exemple le fichier C obtenu serai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int main(void)
    {
        system("CLS");
        system("ECHO Mon texte a l'ecran");
        return 0;
    }
    (il manque peut etre des includes)

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Attendez Ne criez pas tout de suite Je sais bien que le bat ne se compile pas
    si si
    http://www.astase.com/produits/powerbatch/ -> outils powerbatch (free )

    il manque peut-être des include
    En effet :

  4. #4
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    j'y avait jamais pense mais le batch etant au format texte il doit bien pouvoir etre traduit en un equivalent binaire

  5. #5
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    je vois pas vraiment comment tu peux faire une correspondance directe txt<->binaire.
    Simplement il doit générer du code c ou basic ou autre.. tel que tu l'as décrit à partir du bat et le compiler en .com.
    rien de sorcier apparemment. .

  6. #6
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    la fonction system le fait bien puisqu'elle prend une commande sous forme de chaine de caractere qui est transformee en binaire par la compilation donc je me disait qu'il devait bien y avoir moyen de transformer le fichier batch directement en binaire sans passer par un autre langage
    en meme temps je m'y connait pas trop en commande dos...

  7. #7
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    La solution de straasha est celle que je prendrai sauf si il y en a une meilleur.

    En fait lorsque j'ai demandé des logiciels, je me suis mal exprimé je voulais dire des exe en mode console qui attendent des paramètres (le nom du fichier .bat) et qui créé un exe

    Si quelqu'un à mieux

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Le problème, c'est que c'est loin d'être trivial, compiler du batch.
    Il ne faut pas seulement lancer les lignes de commandes une à une, il faut prendre en compte les instructions batch complexes (for) ou qui ont des effets sur l'environnement (set)...

  9. #9
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    attention quand meme aux lignes vide et aux commentaires
    je sais pas comment reagit system dans ces cas
    a trier donc au moment de la lecture du batch (et eventuellement transformer les commentaires batch en commentaire C )

  10. #10
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Ma solution serait celle là (grace à vos idées )

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    debut: 
    efface_ecran
    couleur noir:blanc:
    commentaire: on affiche salut
    affiche_txt salut
    saute_ligne
    affiche_txt salut2
    fin:
    En

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int main()
    {
    system("CLS");
    system("COLOR F9");
    //on affiche salut
    system("ECHO salut");
    printf("\n");
    printf("ECHO salut2");
    system("PAUSE");
    return 0;
    }

  11. #11
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    je n'ai que tres tres peu utilise les batch mais il me semble que tout doit etre sur la meme ligne.
    un retour a la ligne dans le batch equivaut a un appuie sur la touche enter sous dos et donc a l'execution de ladite ligne
    donc, selon moi, le corps du for doit etre sur la meme ligne que le for lui meme.
    me trompe-je ?

  12. #12
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    il manque au debut de ton .c

    et il y a au lieu de

  13. #13
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Ok pour le header

    Oui et non (straasha), voici un prog bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @ECHO OFF
    CSL
    SET mavar=salut
    title=%mavar%
    ECHO Salut c'est SamSoft
    REM On saute une ligne
    ECHO.
    ECHO Voila un txt ecrit sur la seconde ligne
    if %mavar%==salut (ECHO ok) else echo non
    PAUSE
    Comment puis-je résoudre le problème des variables ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    system("SET mavar=1");
    system("echo %mavar%");
    Ca va marcher ca ?

  14. #14
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    en fait j'en sais rien du tout
    j'ai poste cette solution tout a fait naivement mais je dirai qu'il y a des chances que ca marche puisque le set va modifier les var d'environnement (enfin il me semble) et la variable pourra donc etre trouvee dans ces var
    mais encore une fois je n'ai que des connaissances tres faibles en batch et en utilisation de system()

  15. #15
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Je vais tester de suite Merci encore, continuez à poster si vous avez d'autres solutions

  16. #16
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
      system("SET mavar=90");
      system("@ECHO %mavar%");
      system("PAUSE");    
      return 0;
    }
    Ce code m'affiche %mavar%

    C'est donc que la variable SET mavar a été crée puis supprimée au second "sytem"

  17. #17
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Enfin j'ai trouvé la solution : faire une conversion de mes commandes en francais en mélangeant C et commande bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    systeme("efface ecran");->system("CLS");
    systeme("couleur :noir:blanc");->system("color F8);
    affiche("texte");->printf("texte");
    ...

  18. #18
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    arg
    dans la mesure ou tu es en train de remplacer les commandes dos, tu dois pouvoir faire en sorte que, dans ta syntaxe, il n'y ai pas d'equivalent de SET mais plutot un equivalent d'une declaration de variable en C que tu traduira pour ton fichier C
    ensuite il te faudra lire chaque ligne pour voir si la variable est presente
    2 cas de figure se presente alors :
    1 - c'est une affectation : traduire par une affectation en C
    2 - c'est une utilisation : ajouter un sprintf pour modifier la chaine de caractere de la commande en remplacant la var par sa valeur puis faire un appel a system en mettant en param la nouvelle chaine de carateres

    je sais pas si c'est tres clair ni si ca couvre tous les cas...

  19. #19
    Membre averti Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Points : 345
    Points
    345
    Par défaut
    Je ne comprend pas trop votre solution mais avec system("commande x"); la sauvegarde de variable tout au long du programme est impossible car a chaque system, on réinitialise l'ensemble, la solution que j'ai trouvé et que j'ai énoncé plus haut c'est d'utiliser system uniquement pour les commandes à cause des quelles il me faudrait utiliser une librairie comme conio, en fait tout fonctionne, je n'ai plus de soucis

  20. #20
    Membre actif Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Points : 297
    Points
    297
    Par défaut
    je me suis surement mal exprimé mais ca revient a melanger des commandes C et des commandes DOS

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Compilation : Appel avant/après de fichier .bat
    Par boboss123 dans le forum NetBeans
    Réponses: 0
    Dernier message: 06/02/2013, 13h56
  2. compiler fichier .bat
    Par rodgeurette dans le forum C++
    Réponses: 3
    Dernier message: 19/07/2007, 15h26
  3. Peut-on compiler des fichiers BAT ou CMD svp ?
    Par arnofly dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 18/05/2007, 17h56
  4. Compilation de fichier .bat
    Par _SamSoft_ dans le forum Delphi
    Réponses: 7
    Dernier message: 16/05/2007, 18h03
  5. Réponses: 2
    Dernier message: 25/10/2002, 22h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo