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

Scripts/Batch Discussion :

Makefile, batch & boucle FOR


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut Makefile, batch & boucle FOR
    Bonjour,

    pour me simplifier la vie au boulot, je cherche à ma créer un petit Makefile.
    Dedans, j'ai besoin d'utiliser une boucle FOR... mais sans succès.

    Exemple de ce que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    all:
            FOR %A IN (1 2 3) DO ECHO %A
    Et de ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >make
    FOR %A IN (1 2 3) DO ECHO %A
    process_begin: CreateProcess(NULL, FOR %A IN (1 2 3) DO ECHO %A, ...) failed.
    make (e=2): Le fichier spÚcifiÚ est introuvable.
    make: *** [all] Erreur 2
    Habitué aux Makefiles sous Linux, y a-t-il une subtilité que j'aurais raté ?
    Merci pour votre aide !

    Alban

    PS : j'utilise le make de GNUWin32 (http://gnuwin32.sourceforge.net/packages/make.htm).

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Première fois que je vois du BATCH en plein milieu d'un makefile, pour ma part... Ton truc échoue tout simplement parce que make tente d'exécuter ta ligne "FOR %A IN (1 2 3) DO ECHO %A" comme si c'était un programme : en gros, l'équivalent d'aller sur Démarrer -> Exécuter -> "FOR %A IN (1 2 3) DO ECHO %A"... Ce qui, bien entendu, va échouer.

    Soit tu fais un BATCH séparé, qui sera lancé par "cmd.exe", soit tu ne mets que des commandes externes (=programmes autonomes), soit tu préfixes par "cmd /c " en n'omettant pas les "@" si tu ne veux pas voir les lignes de commande.

    Donc, ça devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    all:
       cmd /c @FOR %A IN (1 2 3) DO @ECHO %A
    "cmd /c" (ou, si "make" est un peu évolué, "%COMSPEC% /c" qui est bien plus compatible) permet d'interpréter une ligne de BATCH.
    Le premier "@", devant le "FOR", évite de voir la ligne "FOR ...." à l'écran.
    Le deuxième "@", devant le "ECHO", évite de voir les commandes ECHO elles-mêmes.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    J'avoue avoir moi aussi plus l'habitude des Makefiles Unix... d'où ce genre d'accroc quand j'arrive sous Windows.

    En tout cas, merci : %COMSPEC% /c me plaît bien !
    Je devrais finir par réussir à en faire quelque chose de ce Makefile en insistant un peu.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par alband85 Voir le message
    En tout cas, merci : %COMSPEC% /c me plaît bien !
    L'avantage, c'est que ça marchera aussi bien sur Windows 95, NT4, XP ou Vista, et ceci quel que soit le chemin d'installation de Windows et/ou l'état courant du PATH... Il est quand même assez rare de voir une configuration d'environnement où l'on a supprimé cette variable COMSPEC !

    Citation Envoyé par alband85 Voir le message
    Je devrais finir par réussir à en faire quelque chose de ce Makefile en insistant un peu.
    De rien. Par contre, si tu as des traitement "longs" et/ou complexes, faudra peut-être penser à faire un "vrai" script BATCH plutôt qu'un makefile : dans un makefile, si tu fais plus que quelques commandes "simples" et surtout ponctuelles, tu risques vite d'arriver à une espèce d'usine à gaz qui risque de devenir difficile à maintenir.

    Bonne continuation.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. [batch] double boucle for
    Par schlopa dans le forum Windows
    Réponses: 12
    Dernier message: 11/02/2008, 19h54
  2. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  3. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21

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