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 :

token avec variable au lieu de specifier un entier


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 31
    Points
    31
    Par défaut token avec variable au lieu de specifier un entier
    Bonjour,

    Voici la description de mon problème.

    J'ai une variable N qui me retourne 7

    echo !N!
    7

    J'aimerais que le token commence a la valeur de N comme ci dessous mais je n'arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FOR /L %%i IN (1,1,!N!) DO (
    	set /a cpt=%%i
    	FOR /F "tokens=!cpt! delims=;" %%a in ("%path%") DO (
    		echo %%a
    	)
    )
    On dirait qu'il n'accepte que des valueurs exactes comme 1 2 3 mais pas de variable qui continne l'entier.

    En Fait, si je fais cela ca fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOR /F "tokens=1 delims=;" %%a in ("%path%") DO (
    	echo %%a
    )
    Mais avec une variable ca ne fonctionne pas (lorsque je remplace tokens=1 par tokens=1=!cpt!

    Quelqu un pourrait m'aider ...

    Merci

  2. #2
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Apres tests, il semblerait qu'il n'aime pas le !cpt!. Si tu extrais ta sous boucle et donc que tu utilises %cpt% cela fonctionne.

    Du coup il faut que tu feintes pour ne pas avoir à utiliser l'expansion retardée des variables. Tu peux t'en sortir avec un call :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set /A N=7
    
    FOR /L %%i IN (1,1,!N!) DO (
    	call :boucle %%i
    )
    
    pause
    goto :EOF
    
    :boucle
    FOR /F "tokens=%1 delims=;" %%a in ("%path%") DO (
        echo %%a
    )
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 31
    Points
    31
    Par défaut
    Salut,

    Merci beucoup ca a l'ai de fonctionner a moitié.

    En fait il m'affiche bien les variables mais j'ai le message d'erreur suivant :
    delims=;" was unexpected at this time.

    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
    FOR /L %%i IN (1,1,!N!) DO (
    	call :boucle %%i
    )
    
    pause
    rem goto :EOF
    echo fini
    
    
    endlocal
    
    :boucle
    FOR /F "tokens=%1 delims=;" %%a in ("%path%") DO (
        echo %%a
    )
    En fait avec :
    goto :EOF
    il n' y a pas de message d'erreur.

    Mais si je l'enlève et je mets du code a la place il me met le message d'erreur ci dessus.

  4. #4
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    C'est normal, le GOTO n'est pas la par hasard.

    Il indique la fin de ton programme, il faut voir le :boucle comme une fonction que tu appeles qui ne fait pas parti de ton script principal.
    Si tu ne mets pas de GOTO :EOF avant le :boucle, ton script va exectuer le code après :boucle une fois l'instruction endlocal executée.
    Et comme :boucle attend un argument, tu obtiens cette erreur

    D'une règle général un script doit etre structuré ainsi :

    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
    REM Script principal
    code
    call func1
    code
    call func2
    goto :EOF
    
    REM Fonctions appelées par le script principal
    func1:
      code
      goto :EOF
    
    func2:
      code
      goto :EOF
    C'est pareil si à la fin de func1 je ne mets pas de goto, le script va exécuter func2 à la suite.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoups

Discussions similaires

  1. token avec variable au lieu de specifier un entier
    Par ahmet57 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 24/02/2011, 10h29
  2. Réponses: 2
    Dernier message: 13/02/2007, 17h40
  3. [AS2] Pb avec variables dans syntaxe
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 05/07/2005, 11h28
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 11h07
  5. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 17h20

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