Batch : Affichage de la date moins 3 jours
Résolu/Fermé
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
-
23 mai 2013 à 11:00
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 23 mai 2013 à 14:05
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 23 mai 2013 à 14:05
A voir également:
- Batch : Affichage de la date moins 3 jours
- Fichier batch - Guide
- Msgbox batch ✓ - Forum Autoit / batch
- Net use batch - Forum Réseau
- Extension batch - Forum Windows
- Batch color - Forum Autoit / batch
3 réponses
ryko1820
Messages postés
1645
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 23/05/2013 à 12:48
Modifié par ryko1820 le 23/05/2013 à 12:48
Hello,
j'ai trouvé un truc sur le net et avec j'ai fait ça :
Tu trouveras ta variable date -3 jours dans ndatealt
Si ça peut t'aider ... (testé sous W7) (J'ai gardé le format Fr pour le formatage de la variable ndatealt.)
Ça aurait peut être été plus facile dans un autre langage mais c'était pas la question ... :)
J'utilise la date système (boucle for) mais en modifiant un peu tu devrais pouvoir utiliser la date de ton choix.
j'ai trouvé un truc sur le net et avec j'ai fait ça :
@echo off for /F "tokens=1,2,3 delims=/" %%I in ('date /T') do call :DateToDays %%K %%J %%I days ::echo/%days% set /A nday=%days%-3 ::echo/%nday% call :DaysToDate %nday% yyyy mm dd ::call :DaysToDate %1 yy mm dd set ndatealt=%dd%/%mm%/%yy% ::echo/%yy%-%mm%-%dd% echo %ndatealt% goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DaysToDate %days% yy mm dd :: :: By: Ritchie Lawrence, 2002-06-15. Version 1.1 :: :: Func: Returns a calendar date from the number of elapsed days since 1st :: January 1970. For NT4/2K/XP. :: :: Args: %1 MJD used to create calendar date (by val) :: %2 var to receive year component, 4 digits (by ref) :: %3 var to receive month component, 2 digits, 01-12 (by ref) :: %4 var to receive day of month component, 2 digits, 01-31 (by ref) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5 set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10 (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%) endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToDays %yy% %mm% %dd% days :: :: By: Ritchie Lawrence, 2002-09-26. Version 1.0 :: :: Func: Returns the number of days elapsed since 1st January 1970 for a :: given date. For NT4/2K/XP :: :: Args: %1 year component used to create days, 2 or 4 digits (by val) :: %2 month component used to create days, leading zero ok (by val) :: %3 date of month used to create days, leading zero ok (by val) :: %4 var to receive number of elapsed days (by ref) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 endlocal&set %4=%j%&goto :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Tu trouveras ta variable date -3 jours dans ndatealt
Si ça peut t'aider ... (testé sous W7) (J'ai gardé le format Fr pour le formatage de la variable ndatealt.)
Ça aurait peut être été plus facile dans un autre langage mais c'était pas la question ... :)
J'utilise la date système (boucle for) mais en modifiant un peu tu devrais pouvoir utiliser la date de ton choix.
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
23 mai 2013 à 12:46
23 mai 2013 à 12:46
hello
avec la commande date Unix pour DOS
avec la commande date Unix pour DOS
C:> .\date -d "3 days ago" Mon May 20 12:40:52 C:>https://forums.commentcamarche.net/forum/affich-27859359-commande-permettant-de-recuperer-le-quantieme-du-jour-en-dos#5
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
23 mai 2013 à 13:45
23 mai 2013 à 13:45
Salut Dubcek !
merci pour ta participation, mais mon projet ne me permet pas d'intégrer le script que tu proposes.
La proposition de Ryko devrait pouvoir me suffire.
Merci et à bientôt ! ;)
merci pour ta participation, mais mon projet ne me permet pas d'intégrer le script que tu proposes.
La proposition de Ryko devrait pouvoir me suffire.
Merci et à bientôt ! ;)
ryko1820
Messages postés
1645
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 23/05/2013 à 13:07
Modifié par ryko1820 le 23/05/2013 à 13:07
Tiens une version modifiée qui utilise une date entrée en argument :
J'ai vérifié :
(je l'avais appelé ttd.bat)
@echo off ::for /F "tokens=1,2,3 delims=/" %%I in ('date /T') do call :DateToDays %%K %%J %%I days for /f "tokens=1,2,3 delims=/" %%I in ("%1") do call :DateToDays %%K %%J %%I days echo/%days% set /A nday=%days%-3 echo/%nday% call :DaysToDate %nday% yyyy mm dd ::call :DaysToDate %1 yy mm dd set ndatealt=%dd%/%mm%/%yy% ::echo/%yy%-%mm%-%dd% echo %ndatealt% goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DaysToDate %days% yy mm dd :: :: By: Ritchie Lawrence, 2002-06-15. Version 1.1 :: :: Func: Returns a calendar date from the number of elapsed days since 1st :: January 1970. For NT4/2K/XP. :: :: Args: %1 MJD used to create calendar date (by val) :: %2 var to receive year component, 4 digits (by ref) :: %3 var to receive month component, 2 digits, 01-12 (by ref) :: %4 var to receive day of month component, 2 digits, 01-31 (by ref) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5 set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10 (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%) endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: goto :EOF ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :DateToDays %yy% %mm% %dd% days :: :: By: Ritchie Lawrence, 2002-09-26. Version 1.0 :: :: Func: Returns the number of days elapsed since 1st January 1970 for a :: given date. For NT4/2K/XP :: :: Args: %1 year component used to create days, 2 or 4 digits (by val) :: %2 month component used to create days, leading zero ok (by val) :: %3 date of month used to create days, leading zero ok (by val) :: %4 var to receive number of elapsed days (by ref) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633 endlocal&set %4=%j%&goto :EOF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
J'ai vérifié :
(je l'avais appelé ttd.bat)
C:\temp\Work>ttd 02/01/2014 16072 16069 30/12/2013 C:\temp\Work>
Ka-El
Messages postés
260
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
7 août 2020
23 mai 2013 à 13:46
23 mai 2013 à 13:46
Ta première proposition est la meilleur !
Merci encore pour ton aide précieuse.
Bonne continuation.
Merci encore pour ton aide précieuse.
Bonne continuation.
23 mai 2013 à 13:43
ça marche mais honnêtement je ne m'attendais pas à un truc aussi complexe.
Je comprends maintenant un peu toutes les critiques entendues sur le monde MS... ;)
Merci encore ! :)
Modifié par ryko1820 le 23/05/2013 à 14:19
Dommage qu'on ne puisse pas récupérer simplement (sans ajout ou écriture de programmes autres) l'heure posix dans l'environnement Windows (les millisecondes depuis 1/1/1970), ça faciliterait les choses ...
Il y a pas mal d'autres fonctions sympas sur son site ...
Merci à toi de m'avoir qui par ta question m'a permis de le découvrir :-)