Batch pour afficher date + 1 jour

Résolu
sam0ray Messages postés 29 Statut Membre -  
karirovax Messages postés 3584 Statut Membre -
Bonjour,

Je voudrai afficher la date + 1 jour sur mon script BATCH (DOS) tout en respectant les contrainte de la date (l'année bissextile, mois dans le cas de mois 12 + 1 = 01, le nombre de jour dans le mois 28 29 30 31).

Merci d'avance pour votre réponse.

5 réponses

  1. karirovax Messages postés 3584 Statut Membre 215
     
    salut
    vous pouvez donner le code ? pour vous aider ;)
    0
  2. karirovax Messages postés 3584 Statut Membre 215
     
    Re, up

    comme ceci ? :

    @Echo off
    set annee=%date:~6,4%
    set mois=%date:~3,2%
    set jour=%date:~0,2%
    0
  3. sam0ray Messages postés 29 Statut Membre
     
    Plutôt l'algorithme je vous donne dessous le résultat que je veux :

    @echo off

    set aujourdhui=%date%
    set demain=%date% + 1
    echo demain on est : %demain%
    pause

    je savais que c'est pas logique de faire date + 1 mais juste pour vous expliquez mon besoin.

    j'ai déjà penser à une idée un peu bidon, je ne sais pas comment mettre dans if l'opérateur logique "et" et "ou" aussi j'ai pas pu traité le cas de mois de février et le mois de décembre :

    NB : le code ne marche pas

    @echo off

    rem si la date du système est de la forme jj/mm/aaaa
    echo la date systeme est : %DATE%
    echo.
    rem récupération de jour, le mois et l'année
    Set jr=%DATE:~0,2%
    Set ms=%DATE:~3,2%
    Set ane=%DATE:~6,4%

    rem il faut mettre l'operateur logique "et" pour que les deux conditions soit respecter à la foi
    if %jr% == 31 %ms% == 01 set demain=01 02 %ane%
    if %jr% == 31 %ms% == 03 set demain=01 04 %ane%
    if %jr% == 30 %ms% == 04 set demain=01 05 %ane%
    if %jr% == 31 %ms% == 05 set demain=01 06 %ane%
    if %jr% == 30 %ms% == 06 set demain=01 07 %ane%
    if %jr% == 31 %ms% == 07 set demain=01 08 %ane%
    if %jr% == 31 %ms% == 08 set demain=01 09 %ane%
    if %jr% == 30 %ms% == 09 set demain=01 10 %ane%
    if %jr% == 31 %ms% == 10 set demain=01 11 %ane%
    if %jr% == 30 %ms% == 11 set demain=01 12 %ane%

    rem dans le cas contraire si le jour est normal
    else
    set demain = %jr%+1 %ms% %ane%

    rem afficher le résultat
    echo demain nous somme le : %demain%

    pause

    rem fin

    merci de votre aide
    0
  4. sam0ray Messages postés 29 Statut Membre
     
    je vous donne les cas possible :

    Cas normal :
    date = 08/07/2010 => date + 1 =09/07/2010

    Cas de fin de mois
    date = 31/07/2010 => date + 1 =01/08/2010
    date = 30/06/2010 => date + 1 =01/07/2010
    date = 28/02/2010 => date + 1 =01/03/2010

    Cas de mois de décembre
    date = 31/12/2010 => date + 1 =01/01/2011

    Cas de l'année bissextile
    date = 29/02/2010 => date + 1 =01/03/2010
    0
    1. karirovax Messages postés 3584 Statut Membre 215
       
      Re,

      pour le 1er code il n ya pas d'espace entre le %jr% et l'égalité == et pour l'ajout de et/ou logique il faut ajouter une autre IF , c tout , voici la marche à suivre :

      echo.
      rem récupération de jour, le mois et l'année
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set demain=
      rem il faut mettre l'operateur logique "et" pour que les deux conditions soit respecter à la foi
      if %jr%==31 if %ms%==01 set demain=01 02 %ane%
      if %jr%==31 if %ms%==03 set demain=01 04 %ane%
      if %jr%==30 if %ms%==04 set demain=01 05 %ane%
      if %jr%==31 if %ms%==05 set demain=01 06 %ane%
      if %jr%==30 if %ms%==06 set demain=01 07 %ane%
      if %jr%==31 if %ms%==07 set demain=01 08 %ane%
      if %jr%==31 if %ms%==08 set demain=01 09 %ane%
      if %jr%==30 if %ms%==09 set demain=01 10 %ane%
      if %jr%==31 if %ms%==10 set demain=01 11 %ane%
      if %jr%==30 if %ms%==11 set demain=01 12 %ane%

      echo demain est le : !demain!

      pause
      0
    2. karirovax Messages postés 3584 Statut Membre 215
       
      ca marche ??
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sam0ray Messages postés 29 Statut Membre
     
    oui ça marche, merci karirovax

    Mais juste dans le cas normal comment faire le else ??? càd :

    le cas ou le jour au 30 et 31, il faut mettre quelque part un else de fin des if
    0
    1. karirovax Messages postés 3584 Statut Membre 215
       
      Re,

      pour le cas d'un else :

      un exemple :

      if %jr%==31 (if %ms%==01 set demain=01 02 %ane%
      ) else (
      echo votre commande ici )
      0
    2. sam0ray Messages postés 29 Statut Membre
       
      Je n'arrive pas à le faire peux tu me donner le code avec else ? merci d'avance
      dessous ce que j'ai fait mais il m'arche pas :

      @echo off
      setlocal enableDelayedExpansion
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set demain=
      if %jr%==31 (if %ms%==01 set demain=01 02 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==03 set demain=01 04 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==04 set demain=01 05 %ane%
      )else (
      goto Dateplus)

      if %jr%==31 (if %ms%==05 set demain=01 06 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==06 set demain=01 07 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==07 set demain=01 08 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==08 set demain=01 09 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==09 set demain=01 10 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==10 set demain=01 11 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==11 set demain=01 12 %ane%
      )else (
      goto Dateplus)


      :Datenormal
      echo dans le cas normal demain on est: !demain!

      :Dateplus
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set demain=%jr%+1 %ms% %ane%
      echo demain dans le cas normal est: %demain%
      pause

      merci d'avance
      0
    3. karirovax Messages postés 3584 Statut Membre 215
       
      Re,
      essayez ceci ( ca marche je pense )

      @echo off
      setlocal enableDelayedExpansion
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set demain=

      if %jr%==31 (if %ms%==01 set demain=01 02 %ane%
      ) else (
      echo votre commande ici )

      if %jr%==31 (if %ms%==01 set demain=01 02 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==03 set demain=01 04 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==04 set demain=01 05 %ane%
      )else (
      goto Dateplus)

      if %jr%==31 (if %ms%==05 set demain=01 06 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==06 set demain=01 07 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==07 set demain=01 08 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==08 set demain=01 09 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==09 set demain=01 10 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==10 set demain=01 11 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==11 set demain=01 12 %ane%
      )else (
      goto Dateplus)


      :Datenormal
      echo dans le cas normal demain on est: !demain!

      :Dateplus
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set /a jr=%jr:~1%+1
      set demain=%jr% %ms% %ane%
      echo demain dans le cas normal est: %demain%
      pause
      0
    4. sam0ray Messages postés 29 Statut Membre
       
      merci pour votre aide le code marche mais l'appel de la fonction est inversé dessous le code modifier :

      @echo off
      setlocal enableDelayedExpansion
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set demain=

      if %jr%==31 (if %ms%==01 set demain=01 02 %ane%
      goto Dateplus)else (
      goto Datenormal)


      if %jr%==31 (if %ms%==03 set demain=01 04 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==04 set demain=01 05 %ane%
      )else (
      goto Dateplus)

      if %jr%==31 (if %ms%==05 set demain=01 06 %ane%
      )else (
      goto Dateplus)

      if %jr%==30 (if %ms%==06 set demain=01 07 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==07 set demain=01 08 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==08 set demain=01 09 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==09 set demain=01 10 %ane%
      )else (
      goto Dateplus)


      if %jr%==31 (if %ms%==10 set demain=01 11 %ane%
      )else (
      goto Dateplus)


      if %jr%==30 (if %ms%==11 set demain=01 12 %ane%
      )else (
      goto Dateplus)


      :Dateplus
      echo dans le fin de mois, demain on est:
      goto suite

      :Datenormal
      Set jr=%DATE:~0,2%
      Set ms=%DATE:~3,2%
      Set ane=%DATE:~6,4%
      set /a jr=%jr%+1

      set demain=%jr% %ms% %ane%
      echo demain dans le cas normal est:
      goto suite

      :suite
      echo !demain!
      pause
      0
    5. sam0ray Messages postés 29 Statut Membre
       
      pour que le code soit complet, de préférable qu'on traite les cas d'exceptions:

      -Dans le cas de mois de décembre il faut que l'année soit en plus
      -et dans le cas mois de février : 28 et 29, dans ce cas il faut connaitre est ce que l'année est bissextile (2012 2016 2020 ...) ou pas

      merci encore de votre aide
      0