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 :

Décrémenter de un le mois dans la date


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 75
    Points
    75
    Par défaut Décrémenter de un le mois dans la date
    Bonjour,
    J'aurais besoin d'un petit script qui me décrémenter de un le numéro de mois dans la date.
    Par exemple, on est le 16/02/2015, j'aurais besoin de récupérer la date, la modifier pour qu'elle donne 16/01/2015.
    J'ai commencer mon script avec la petite spécificité du mois de janvier qui doit me donner 12/2014 (année précédente forcément).
    Le résultat attendu est trois valeurs différentes, la première la date du mois précédent sous la forme AAAAMMJJ avec le numéro du mois précédent et le jour toujours à 01.
    La deuxième valeur sous la forme AAAAMMJJ avec le mois actuel.
    Et la dernière valeur sous la forme MM/AAAA avec le mois précédent.
    Voici mon script :
    Code bat : 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
    Set /a annee=%date:~6,4%
    Set /a moisencours=%date:~3,2%
    Set /a mois2=%date:~3,2%
    Set /a test=01
     
    If %moisencours% == %test% Goto :janvier
    Goto :autremois
     
    :janvier
    %mois2%=12
    %annee%=%annee%-01
    Goto :FinTraitement
     
    :autremois
    %mois2%=%moisencours%-01
    Goto :FinTraitement
     
    :FinTraitement
    Set /a 1erjour=01
    Set /a dernierjour=01
    set /a mois2=%moisencours%-01
    Set /a eventDateStart=%annee%%mois2%01
    Set /a eventDateEnd=%annee%%moisencours%01
    Set datePeriode=%mois2%/%annee%
     
     
    echo extraction.query.eventDateStart=%eventDateStart% > D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2
    echo extraction.query.eventDateEnd=%eventDateEnd% >> D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2
    echo extraction.query.datePeriode=%datePeriode% >> D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2

    Le retour attendus est la création d'un fichier "external.properties" avec comme contenu
    extraction.query.eventDateStart=20150101
    extraction.query.eventDateEnd=20150201
    extraction.query.datePeriode=01/2015
    Pour ce mois-ci.

    Pour le moment, le retour que j'ai est celui-là :
    extraction.query.eventDateStart=2015101
    extraction.query.eventDateEnd=2015201
    extraction.query.datePeriode=1/2015
    Il me manque donc un "0" dans chaque numéro de mois. :s

    Si quelqu'un a une idée, d'avance merci.

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Je te propose un script mixte BAT/VBS qui utilise les fonctions natives de gestion des dates du VBS :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ::SachaDee 2015
     
    @echo off
    echo>##.vbs wscript.echo DateAdd("M",-1,now)
    for /f "tokens=1 delims== " %%y in ('cscript/nologo ##.vbs') do (set $dateMoins1=%%y)
    echo %$dateMoins1%
    del ##.vbs 2>nul
     
    (
    echo extraction.query.eventDateStart=%$dateMoins1:~6,4%%$dateMoins1:~3,2%%$dateMoins1:~0,2%
    echo extraction.query.eventDateEnd=%$dateMoins1:~6,4%%date:~3,2%%$dateMoins1:~0,2%
    echo extraction.query.datePeriode=%$dateMoins1:~3,2%/%date:~6,4%
    )>D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2
    pause

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 75
    Points
    75
    Par défaut
    Malheureusement, je ne peut pas utiliser de VBS. Ce script doit être lancer par un ordonnanceur (controlm) qui ne supporte pas le VBS. Elle accepte quasiment exclusivement les .bat. :s
    Mais je te remercie de ta réponse.

    PS : Ma faute, j'aurais du préciser cette information dès le départ.

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Malheureusement, je ne peut pas utiliser de VBS. Ce script doit être lancer par un ordonnanceur (controlm) qui ne supporte pas le VBS. Elle accepte quasiment exclusivement les .bat
    Mon code est un .BAT (qui utilise du VBS)

    Si tu veux ça en BAT pur voici une solution :

    Code bat : 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
     
     
    ::SachaDee 2015
     
    @echo off
    FOR /F "skip=1 tokens=1,2,3" %%a IN ('WMIC Path Win32_LocalTime Get Month ^,Year^,Day /Format:table') do (
          Set $An=%%c
          Set $Mois=%%b
          Set $Jour=%%a
          goto:next
    )
     
    :next
    setlocal
    if %$Mois%==1 (
      set $Mois=13
      set /a $An=%$an%-1
    )
     
    set /a $mois-=1
    call:Lead0
     
    echo extraction.query.eventDateStart=%$an%%$mois%%$Jour%>D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2
     
    endlocal&(set $M=%$mois%
              set $A=%$an%)
     
    call:Lead0
     
    (
    echo extraction.query.eventDateEnd=%$an%%$Mois%%$Jour%
    echo extraction.query.datePeriode=%$M%/%$A%
    )>D:\VDL\Exploit\Interfaces\Bureau_Hygiene\external.properties2
     
    pause
    exit/b
     
     
    :Lead0
    if %$Mois% leq 10 set $Mois=0%$Mois%

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 75
    Points
    75
    Par défaut
    Je te remercie de ta réponse.

Discussions similaires

  1. Récupérer le jour, le mois dans une date mysql
    Par sandddy dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/03/2008, 11h54
  2. Extraction du mois dans une date
    Par Kallamou dans le forum Access
    Réponses: 4
    Dernier message: 02/02/2007, 22h13
  3. [Dates] ajouter des mois dans une date
    Par illegalsene dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2007, 14h41
  4. [Dates] récupérer le mois dans une date
    Par griese dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2006, 15h25
  5. [LG] Extraire le mois dans une date en PASCAL
    Par JPCOCU dans le forum Langage
    Réponses: 1
    Dernier message: 03/10/2005, 15h40

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