Dates excédentaires [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
lundi 4 mars 2019
Statut
Membre
Dernière intervention
16 mars 2019
-
 Elwood -
J'essaie de faire un programme capable de créer une arborescence de dossier avec les dates.
Le problème est qu'il ne prend pas en compte le fait que certain mois ont un certain nombre de jours. Donc si je l'exécutes le 28 Février il créera 7 fichiers nommé jusqu'au 34 Février. Comment faire en sorte qu'il iras automatiquement sur l'autre début de mois ?
Merci de votre aides !

Code source :
https://pastebin.com/EEHTt73r

2 réponses

Messages postés
12636
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
5 juillet 2020
3 331
Bonjour,

Voilà une solution qui prend en compte le nombre de jours de chaque mois :

:: Ce fichier a pour but de simplifier la création
:: d'une arborescence de dossier pour les feuilles
:: de caisses.
::
:: Originalement conçue par ??????????????, 744.

@Echo off
Title Version 1.0 ^| 04-03-2019
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

SET mois=%date:~3,2%
SET jour=%date:~0,2%

SET mois1=Janvier#31
SET mois2=Février#29
SET mois3=Mars#31
SET mois4=Avril#30
SET mois5=Mai#31
SET mois6=Juin#30
SET mois7=Juillet#31
SET mois8=Août#31
SET mois9=Septembre#30
SET mois10=Octobre#31
SET mois11=Novembre#30
SET mois12=Décembre#31

for /L %%A in (1,1,12) do set limite%%A=!mois%%A:~-2!

set dossier=Semaine du %jour%-%mois%
if not exist "%dossier%" (MKDIR "%dossier%")
CD %dossier%

if %mois% LSS 10 (set mois=%mois:~1,1%)
set max=!limite%mois%!

for /L %%E in (1,1,7) do (

set /a jour+=1
if !jour! GTR !max! (
set /a jour-=!max!
set /a mois+=1
)
COPY "..\Vierge.xls" "Feuille de Caisses du !jour!-!mois!.xls"

)

echo. & pause
exit /b 0


Je n'ai pas encore cherché pour les années bissextiles, je regarderai ça demain soir.


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63497 internautes nous ont dit merci ce mois-ci

Messages postés
9
Date d'inscription
lundi 4 mars 2019
Statut
Membre
Dernière intervention
16 mars 2019

pour les années bissextile, j'y suis arriver en intégrant ça :

Set /A "bissextile=!(annee%%4) + (!!(annee%%100)-!!(annee%%400))"

IF %mois% EQU Fevrier (
IF %bissextile% EQU 1 (
IF %jour% GTR 29 (
SET mois=Mars
SET jour=1 ))
IF %bissextile% NEQ 1 (
IF %jour% GTR 28 (
SET mois=Mars
SET jour=1 )))
Messages postés
9
Date d'inscription
lundi 4 mars 2019
Statut
Membre
Dernière intervention
16 mars 2019

J'ai réussis à la faire pour tout les mois de l’année à l'exception fait de Février car son nombre de jours varie selon 2 conditions:
- Si l'année est divisible par 4 et non divisible par 100, ou
- Si l'année est divisible par 400.

J'ai essayer avec
SET /A bissextile=2019/4

Alors que le console me renvoie 504... normalement, c'est 504,75. Du coup je sais pas comment faire pour que la console comptent après la virgule

Code source :
https://pastebin.com/uRx7ASSQ
Tu n'as pas besoin de calculer la partie décimale. Tu as juste besoin de savoir s'il y en a une.
Si tu re-multiplies et tu compares le contenu, tu sauras s'il y a une partie décimale.

set /A bissextile=2019/4
set /A mult=%bissextile% * 4
if %bissextile% NEQ %mult% echo non divisible par 4