Menu

Dates excédentaires [Résolu]

Messages postés
9
Date d'inscription
lundi 4 mars 2019
Dernière intervention
16 mars 2019
- - Dernière réponse :  Elwood - 6 mars 2019 à 16:06
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
12186
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
24 mars 2019
2569
1
Merci
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.”

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 46740 internautes nous ont dit merci ce mois-ci

Henreck
Messages postés
9
Date d'inscription
lundi 4 mars 2019
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 )))
Commenter la réponse de barnabe0057
Messages postés
9
Date d'inscription
lundi 4 mars 2019
Dernière intervention
16 mars 2019
0
Merci
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
Commenter la réponse de Henreck