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 :

Calcul de dates


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut Calcul de dates
    Bonjour,

    J'arrive à récupérer la date du jour. La convertir de JJ/MM/AAAA en MM/JJ/AAAA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo Affichage de la date (JJ/MM/AAAA)
    echo %date:~0,2%/%date:~3,2%/%date:~-4%
    
    echo Affichage de la date (MM/JJ/AAAA)
    echo %date:~3,2%/%date:~0,2%/%date:~-4%
    
    Je déclare une variable nbremois qui correspond au nombre de mois à enlever à cette date.
    
    echo variable nombre de mois
    set nbremois=2
    echo Affichage de la date (MM/JJ/AAAA) - nombre de mois (variable nbremois)
    set /a daterecalculee=%date:~3,2%-%nbremois%
    echo %daterecalculee%
    erreur "Invalid number. Numeric constants are either decimal (17),
    hexadecimal (0x11), or octal (021).
    7"

    Normal ma variable nombre de mois est un string mais comment la convertir en integer (pour que mon calcul se fasse) ?

    Comment gérer si le mois est 09 par exemple au lieu de 10. il ne faudrait pas que la date soit sur un seul caractère.

    merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut,

    En fait, tu es bien en mode numérique, mais quand il y a un 0 en première position dans le nombre, ce dernier est considéré comme une valeur octale, mais comme 08 et 09 n'existent pas dans cette base, tu as l'erreur que tu rencontres, c'est à dire un nombre non valide. Pour enlever le zéro initial et travailler en base décimale, tu peux faire une opération qui retourne les restes, code exemple :

    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
    @echo off
    set mois=08
    set nouveaumois=error
    echo.
    echo operation 1:
    echo.------------
    set /a nouveaumois=%mois%+1
    echo.
    echo %nouveaumois%
    echo.
    echo.
    echo operation 2:
    echo.------------
    set /a nouveaumois=(100%mois%%%100)+1
    echo.
    echo %nouveaumois%
    echo.
    echo.
    pause
    Note que le modulo en tant qu'opérateur est ici dédoublé pour qu'il soit interprété comme tel dans un script.

    P.-S. modération : C'est une question qui revient très souvent et apparemment elle n'est pas dans la faq, il faudrait la rajouter...

  3. #3
    Membre averti
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut
    Bonjour,

    Merci beaucoup !

    Comment gérer le plus proprement et simplement possible :
    dans une variable je récupère le mois. Il est récupéré sur un seul chiffre si inférieur à 10.

    Si la date (le mois) est entre 01 et 09, je récupèrerai entre 1 et 9. Il faudrait ajouter le 0. Si entre 10 et 12 aucun souci c'est sur 2 caractères.

    Merci

  4. #4
    Membre averti
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut
    Voici le code que j'ai utilisé ça semble OK

    J'ajoute un 0 devant et je ne conserve que les 2 derniers caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set daterecalculee=0%daterecalculee:~-2%

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    dans ton opération, tu peux ajouter 1000 (ou 100) et ne retenir que les deux derniers chiffres à l'affichage en guise de formatage, tu peux passer par une variable intermédiaire pour ne pas modifier la valeur de la variable initiale aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set /a nouveaumois=(100%mois%%%100)+1+1000
    echo.
    echo %nouveaumois:~-2%
    echo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /a nouveaumois=(100%mois%%%100)+1
    set str_mois=00%nouveaumois%
    set str_mois=%str_mois:~-2%%
    echo.
    echo %str_mois%
    echo.

  6. #6
    Membre averti
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut
    C'est top

    Merci !

  7. #7
    Membre averti
    Femme Profil pro
    Auditeur informatique
    Inscrit en
    Juillet 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 44
    Par défaut Bug depuis ce mois ci
    Bonjour,

    J'exécute une fois par semaine le code ci-dessous dans un script depuis des mois et depuis le mois de décembre ça ne fonctionne plus.

    Ce script, fait des purges de log. On purge les fichiers plus vieux que 2 mois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    REM variable nombre de mois
    set nbremois=2
    echo Purge des logs de plus de 2 mois
    REM echo Affichage de la date (MM/JJ/AAAA) - 2 mois (var nbremois)
    set /a daterecalculee=(100%date:~3,2%%%100)-%nbremois%
    REM Pour les mois < 10, le 0 ne remonte pas
    REM Ajout d'un 0 devant et on ne conserve que les 2 derniers caractères
    set daterecalculee=0%daterecalculee:~-2%
    set daterecalculee=%daterecalculee%/%date:~0,2%/%date:~-4%
    REM echo Affichage de la date (JJ/MM/AAAA) - 2 mois (var nbremois)
    set daterecalculee=%daterecalculee:~3,2%/%daterecalculee:~0,2%/%daterecalculee:~-4%
    REM echo %daterecalculee%
    REM Affichage de la date - 2 mois (var nbremois)
    echo %daterecalculee%
    Voici ce que ça me retourne
    /0/01/2012

    Quelqu'un a-t-il une idée ?

    Merci d'avance pour votre aide.

Discussions similaires

  1. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  2. COUNT + Calcul de DATE
    Par cassi2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/10/2004, 16h35
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  4. SCRIPT CALCULANT LA DATE
    Par Redouane dans le forum ASP
    Réponses: 3
    Dernier message: 17/03/2004, 09h10
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

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