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 :

[Debutant] Batch et Boucle for


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut [Debutant] Batch et Boucle for
    Bonjour a tous,

    J'essaie de faire un script batch tout bete comme vous pouvez le voir ci-dessous :
    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
    @echo off
    :: Schedule list
    
    set WLR_HOME=C:\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe
    set CACHE_HOME=..\cacheComponents
    set SINGLE_HOME=..\singleResponseTime
    
    :: Cache Components 5 minutes per scenario, spacing 5 minutes
    
    set BASE_TIME=00:00:00
    set i=0
    
    for %%f in ( 	CacheTestComponentValidator_iView.lrs 
    		CacheTestComponentValidator_Page.lrs
    		... 
    		CacheTestComponentDiscriminator_Page.lrs     ) do
    
    	schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%f -Run" /sc daily /st %BASE_TIME%+%i%*00:10:00
    	/math i= %i% + 1
    En ajoutant, 1 a la variable i a chaque tour, en modifiant le test en test0, test1 ... et en ajoutant 10 minutes a chaque fois.

    Dans un second temps, je veux recuperer le password demande lors de la premiere execution de schtasks pour qu'il ne le demande pas a chaque tour de boucle.

    Enfin, c'est une version preliminaire, bien entendu les variables CacheXXXX devrait etre ecrites dans un fichier et seul le contenu du fichier devrait etre parse.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  2. #2
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    J'ai traite le sujet d'une maniere legerement differente depuis :

    1> Un fichier texte contenant les informations scenarios.lst :

    ;; PRT Cache Test components

    CacheTestComponentValidator_iView.lrs,00:05:00
    CacheTestComponentValidator_Page.lrs,00:15:00
    ....etc
    et le script suivant :

    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
    @echo off
    :: Schedule list
    
    set WLR_HOME=C:\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe
    set CACHE_HOME=..\cacheComponents
    set SINGLE_HOME=..\singleResponseTime
    
    :: Cache Components 5 minutes per scenario, spacing 5 minutes
    
    set i=0
    
    for /f "eol=; tokens=* delims=," %%a in ( scenarios.lst ) do
    
    	schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b
    	/math i= %i% + 1
    J'ai l'erreur suivante :
    The syntax of the command is incorrect
    Merci de votre aide, par avance

    PS: Pour le password j'ai l'idee de le recuperer de la saisie utilisateur lorsque i=0 et de l'ajouter avec /s <ma_machine> /u <mon_login> /p %PASSWD%
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    la syntaxe '::' me semble valide que pour la déclaration d'étiquette de sous-programme au sens batch, d'aprés ton script il s'agit de commentaire.
    L'utilisation de Rem en lieu et place de '::' corrige le pb, ou plus précisément n'affiche plus le msg d'erreur de syntaxe.
    Place l'instruction echo on en début de script, c'est plus facile pour le mode debug.

    [Edit]
    j'ai tout faux ! cf msg suivant

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Bon j'ai tout faux sur le msg précédent
    La commande For ..Do doit être sur la même ligne :

    For /f "eol=; tokens=* delims=," %%a in ( scenarios.lst ) do (
    schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /math i= %i% + 1 )

    L'ajout de parenthése est nécessaire si l'intruction 'For ...Do' se fait sur 2 lignes.

  5. #5
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "eol=; tokens=1 delims=," %%a in &#40; scenarios.lst &#41; do &#40;
    schtasks /create /tn "test"%i% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st 00&#58;00&#58;00 /s %MACHINE% /ru %UNAME% /rp %PASSWD% 
    set /n i=%i%+1&#41;
    Bon j'ai modifie le script ainsi et j'ai deux soucis, il lance la boucle et recupere bien le premier element du fichier (%%a), mais jamais le second si je remplace l'heure par %%b sans declarer ce dernier. Enfin, il ajoute 0 a chaque iteration de la boucle en lieu et place des valeurs en theorie incrementee de i.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Pour le compteur , la commande Set /A me semble plus approprié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set /A I=0
    ....
    Set /A I+=1
    ...
    Je comprend pas bien le EOL =; ?
    Au vue du contenu du fichier précédent la commande Skip=1 n'est pas préférable ?

    Pour visu, essaie simplement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "eol=; tokens=1 delims=," %%a in &#40; scenarios.lst &#41; do &#40; 
    Echo %%a
    Echo %%b

  7. #7
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Merci, tout ceci est tres aimable, pour le parsing du fichier No problem, tout est regle, je n'ai plus que le probleme du compteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /A i=0
    for /F "eol=; tokens=1,2 delims=," %%a  in &#40; scenarios.lst  &#41; do &#40;
    schtasks /create /tn "test"%i% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /s %MACHINE% /ru %UNAME% /rp %PASSWD% 
    set /A i+=1
    &#41;
    Je commence a comprendre un peu mieux ce langage

    PS : Le probleme a ete resolu en placant le contenu de la boucle dans un second fichier appele par cette derniere.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Effectivement le set /A ne semble pas fonctionner dans bloc (), pb de portée ?
    Si tu souhaites éviter l'utilisation de 2 fichiers.
    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
    echo off
    &#58;&#58; Schedule list 
    
    set WLR_HOME=C&#58;\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe 
    set CACHE_HOME=..\cacheComponents 
    set SINGLE_HOME=..\singleResponseTime 
    
    &#58;&#58; Cache Components 5 minutes per scenario, spacing 5 minutes 
    
    set /A I=0
    for /F "eol=; tokens=1,2 delims=," %%a  in &#40; scenarios.lst  &#41; do call &#58;&#58;Sub1 
    goto end
    
    &#58;Sub1
    
    Rem sous-programme
    rem ici les varaibles %1..9 sont locales au sp
    
    Schtasks /create /tn "test"%I% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /s %MACHINE% /ru %UNAME% /rp %PASSWD%
    set /A I+=1
    Rem retour du SP
    goto &#58;eof 
    
    rem fin du batch 
    &#58;end

  9. #9
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    En effet, Merci pour ton aide si precieuse
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

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

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. Debutant pb boucle for
    Par boober31 dans le forum Débuter
    Réponses: 6
    Dernier message: 24/02/2006, 17h02
  5. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05

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