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 :

Valeur non retournée par une fonction. [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Par défaut Valeur non retournée par une fonction.
    Bonjour,

    C'est un honneur de pouvoir participer à ce forum.

    Voici le code de mon BATCH.

    Tout d'abord, je transforme la date du jour avec ceci (le calcul se fait dans l'etape010:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    :ETAPE005
    FOR /F "usebackq tokens=1,2,3 delims=- " %%F IN (`"DATE /T"`) DO (
      call :ETAPE010 %%H %%G %%F
    )
    set DateAujd=%Z%
    goto ETAPE015
    exit /b
    
    :ETAPE010
    set Day=%1
    set Month=%2
    set Year=%3
    REM Delete Leading Zeros
    set Char=%Day:~0,1%
    if %Char%==0 set Day=%Day:~1,1%
    set Char=%Month:~0,1%
    if %Char%==0 set Month=%Month:~1,1%
    if %Month% LEQ 2 (
       set /A Year-=1
       set /A Month+=12
    )
    set /A Month+=1
    set /A A=%Year%/100
    set /A B=2-%A%+%A%/4
    set /A C=36525*%Year%/100
    set /A D=306001*%Month%/10000
    set /A E=%Day%+1720995+%B%
    
    set /A Z=%C%+%D%+%E%
    
    Rem la valeur z ne retourne pas depuis la fonction etape015
    
    exit /b
    
    :ETAPE015
    FOR /F "USEBACKQ SKIP=7 TOKENS=1,4" %%I IN (`"DIR /A:D"`) DO (
      ECHO %%I %%J > AAA_SIMON_123.tmp
      FOR /F "USEBACKQ tokens=1,2,3 delims=- " %%K in (AAA_SIMON_123.tmp) DO ( 
      CALL :ETAPE010 %%M %%L %%K
      ECHO %Z% : NBJOUR DU DIR POUR DIFF
      set /A Diff=%DateAujd%-%Z%
      ECHO %Diff%
      IF /I %Diff% GEQ %nbJours% rd %%J /S /Q
       )
    )
    del /Q AAA_SIMON_123.tmp
    goto FIN
    exit /b
    
    :FIN
    J'ai aussi auparavant tenté le 2ème for de l'etape015 de la façon suivante, mais ca ne retourne pas %%K %%L et %%M.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    :ETAPE015
    FOR /F "USEBACKQ SKIP=7 TOKENS=1,4" %%I IN (`"DIR /A:D"`) DO (
      FOR /F "USEBACKQ tokens=1,2,3 delims=- " %%K in ("%%I") DO ( 
        CALL :ETAPE010 %%M %%L %%K
        SET /A Diff=%DateAujd%-%Z%
        IF /I %Diff% GEQ %nbJours% rd %%J /S /Q
      )
    )
    goto FIN
    exit /b
    Pouvez-vous m'aider à savoir comment rendre la variable %Z% globale ?
    Merci!

  2. #2
    Membre Expert
    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
    Par défaut
    Salut,

    tu appel une fonction qui n'existe pas call :ETAPE010
    ensuite dans la sous fonction :ETAPE015 tu dois utiliser l'expansion retardé des variables pour que ta variable %Z% soit interpréter..

    rien avoir avec ton code mais pourquoi ne pas utiliser un outils tiers telque FORFILES par exemple:

    pas tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set/p nbJour=
    forfiles -pc:\ -m*.* -d-%nbJour% -c"cmd /c if @ISDIR==TRUE echo RD /S /Q @PATH@FILE"

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Par défaut
    Salut,

    Pour l'étape c'Est bien ETAPE010 que j'ai. Il y a eu un problème d'édition.

    Peux-tu m'expliquer combien bien utiliser l'expansion retardé des variables, car j'ai eu beau essayer tous les trucs possibles, ma valeur 'Z' ne reviens jamais dans l'étape015.

    Merci!

    Citation Envoyé par I'm_HERE Voir le message
    Salut,

    tu appel une fonction qui n'existe pas call :ETAPE010
    ensuite dans la sous fonction :ETAPE015 tu dois utiliser l'expansion retardé des variables pour que ta variable %Z% soit interpréter..

    rien avoir avec ton code mais pourquoi ne pas utiliser un outils tiers telque FORFILES par exemple:

    pas tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set/p nbJour=
    forfiles -pc:\ -m*.* -d-%nbJour% -c"cmd /c if @ISDIR==TRUE echo RD /S /Q @PATH@FILE"

  4. #4
    Membre Expert
    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
    Par défaut
    pour l'Expansion.D.V il y a dans le forum de bonne explications..
    tu change le %Z% en !Z! et tu déclare ton expansion par setlocal enabledelayedexpansion

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Par défaut
    Merci! Je te lève mon chapeau! Ça a été fructueux, ça a finalement fonctionné!

    SIMMMMM

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

Discussions similaires

  1. Valeur retournée par une fonction
    Par defluc dans le forum Langage
    Réponses: 15
    Dernier message: 04/05/2009, 22h47
  2. Réponses: 7
    Dernier message: 03/10/2008, 11h37
  3. Réponses: 2
    Dernier message: 11/04/2008, 22h58
  4. Réponses: 4
    Dernier message: 07/04/2007, 20h02
  5. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 19/01/2007, 23h17

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