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 :

écriture à la ligne boucle for + echo ?


Sujet :

Scripts/Batch

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut écriture à la ligne boucle for + echo ?
    Bonjour,

    Voila je souhaite écrire dans un fichier texte le bloc suivant :

    <Response>
    <Varname>r_1</Varname>
    <Label>Response_1</Label>
    <Expression>v_1[0]</Expression>
    <SensitivityList>
    <Sensitivity>
    <DesignVariable>dv_1</DesignVariable>
    <Expression></Expression>
    </Sensitivity>
    <Sensitivity>
    <DesignVariable>dv_2</DesignVariable>
    <Expression></Expression>
    </Sensitivity>
    <Sensitivity>
    <DesignVariable>dv_3</DesignVariable>
    <Expression></Expression>
    </Sensitivity>
    <Sensitivity>
    <DesignVariable>dv_4</DesignVariable>
    <Expression></Expression>
    </Sensitivity>
    </SensitivityList>
    <State>true</State>
    </Response>

    Dans ce bloc je dois faire varier r_1, Response_1 et v_[0]

    J'ai pensé à une boucle "for" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    @echo off
    Echo essai
    for %%A in (1 2 3 4 5) Do echo ^<Response^>
                ^<Varname^>r_%%A^</Varname^>
                ^<Label^>Response_1%%A^</Label^>
                ^<Expression^>v_1^[%%A-1^]^</Expression^>
                   <SensitivityList>
                   <Sensitivity>
                      <DesignVariable>dv_1</DesignVariable>
                      <Expression></Expression>
                   </Sensitivity>
                   <Sensitivity>
                      <DesignVariable>dv_2</DesignVariable>
                      <Expression></Expression>
                   </Sensitivity>
                   <Sensitivity>
                      <DesignVariable>dv_3</DesignVariable>
                      <Expression></Expression>
                   </Sensitivity>
                   <Sensitivity>
                      <DesignVariable>dv_4</DesignVariable>
                      <Expression></Expression>
                   </Sensitivity>
                </SensitivityList>
                <State>true</State>
             </Response> 
    pause>nul
    Le but est de recopier n fois ce bloc en faisant varier les indices de 1 à n

    Pouvez vous m'aider, car je n'arrive pas à faire en sorte d'écrire à la ligne à l'intérieur de ma boucle.

    PS: Une alternative à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for %%A in (1 2 3 4 5)
    Car si j'ai 50 fois le même bloc à copier sa fé long à écrire.

    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    PS: Une alternative à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for %%A in (1 2 3 4 5)
    Car si j'ai 50 fois le même bloc à copier sa fé long à écrire.
    Tu peux utiliser la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FOR /L %variable IN (début,pas,fin) DO commande [paramètres]
    
        L'ensemble est une séquence de chiffres allant de début à fin, incrémenté
        de pas. Ainsi (1,1,5) génère la séquence 1 2 3 4 5 et (5,-1,1) génère la
        séquence (5 4 3 2 1)

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Bonjour,

    un debut de réponse à ta question :

    http://astase.com/forums/viewtopic.php?id=3580

  4. #4
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Bonjour,

    Merci pour vos réponses, j'avais un peu laché l'affaire, mais maintenant que sa avance, je tiens à finir.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    @Echo oFF
    
    Setlocal
    
    Echo ^<ResponseList^>>>test0.xml
    
    Set /p nb="nombre d'iteration :  "
    
    :boucle
    set /a a+=1
    set /b b+=%a%-1
    Echo ^<Response^>>>test0.xml
    Echo ^<Varname^>r_%a%^</Varname^>>>test0.xml
    Echo ^<Label^>Response%a%^</Label^>>>test0.xml
    Echo ^<Expression^>v_1^[%b%^]^</Expression^>>>test0.xml
    If %a%==%nb% GOTO suite
    Goto boucle
    
    :suite
    
    Echo Terminé.
    Echo ^</ResponseList^>>>test0.xml
    Testé le vous allez comprendre ce que je vais vous expliquer.

    le terme v_1[%b%] doit être décrémenté de 1 par rapport à %a%

    Cependant voila ce que j'ai dans mon fichier test0.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <ResponseList>
    <Response>
    <Varname>r_1</Varname>
    <Label>Response1</Label>
    <Expression>v_1[]</Expression>
    <Response>
    <Varname>r_2</Varname>
    <Label>Response2</Label>
    <Expression>v_1[]</Expression>
    <Response>
    <Varname>r_3</Varname>
    <Label>Response3</Label>
    <Expression>v_1[]</Expression>
    <Response>
    <Varname>r_4</Varname>
    <Label>Response4</Label>
    <Expression>v_1[]</Expression>
    <Response>
    <Varname>r_5</Varname>
    <Label>Response5</Label>
    <Expression>v_1[]</Expression>
    </ResponseList>
    Il ne me met rien entre les crochets. J'ai essayé de définir une variable b comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set /a a+=1
    set /b b+=0
    Mais rien à faire ça ne marche pas.

    Petit up pour ce détail et un résolu pour nous tous car sa peut servir.

    Merci

  5. #5
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    @Echo oFF
    
    Setlocal
    
    Echo ^<ResponseList^>>>test0.xml
    
    Set /p nb="nombre d'iteration :  "
    
    :boucle
    set /a a+=1
    set /a b=1
    set /a c=%a%-%b%
    Echo ^<Response^>>>test0.xml
    Echo ^<Varname^>r_%a%^</Varname^>>>test0.xml
    Echo ^<Label^>Response%a%^</Label^>>>test0.xml
    Echo ^<Expression^>v_1^[%c%^]^</Expression^>>>test0.xml
    If %a%==%nb% GOTO suite
    Goto boucle
    
    :suite
    
    Echo Terminé.
    Echo ^</ResponseList^>>>test0.xml
    J'ai fé une petite bidouille qui marche, si ya moyen de faire ça un peu plus élégant je serais pas contre.

    Merci pour vos réponses et votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recupérer n-1 pour la première ligne-boucle for
    Par magictol53 dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/11/2013, 16h41
  2. Problème d'écriture dans une boucle for
    Par manaliac dans le forum Général Python
    Réponses: 1
    Dernier message: 13/07/2010, 16h46
  3. [AC-2002] Problème d'écriture sur boucle FOR
    Par Titwou dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/06/2009, 19h26
  4. [Tableaux] Utiliser une boucle for dans un echo
    Par maoboy dans le forum Langage
    Réponses: 7
    Dernier message: 18/06/2007, 13h55
  5. Réponses: 2
    Dernier message: 08/03/2007, 11h06

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