A voir également:
- Problème script batch
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Microsoft activation script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Batch renommer une partie du nom de plusieurs fichiers - Guide
9 réponses
kentin5601
Messages postés
3197
Date d'inscription
jeudi 13 novembre 2008
Statut
Membre
Dernière intervention
30 mai 2010
402
26 sept. 2009 à 11:34
26 sept. 2009 à 11:34
Je ne suis pas du tout expert en batch. mais j'ai peut être une idée, "débile"
Si change la date du server a J-1 se sera a la bonne date ?
Âpres je crois qu'il peut y avoir des problème au niveau du réseau donc...
Si change la date du server a J-1 se sera a la bonne date ?
Âpres je crois qu'il peut y avoir des problème au niveau du réseau donc...
malheureusement c'est pas si simple que ça..
j'ai d'autre script qui sont sensés récupérer des logs à la date du jour
j'ai d'autre script qui sont sensés récupérer des logs à la date du jour
Utilisateur anonyme
26 sept. 2009 à 11:51
26 sept. 2009 à 11:51
Hello,
Voici un script trouvé sur Experts Exchange.
Il est paramétrable à J-x jours, et prend J-1 par défaut.
Il te suffit de prendre la / les routines qui t'intéressent et les intégrer dans ton code.
J'espère que ça t'aidera
@echo off
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1
if "%dayCnt%"=="" set dayCnt=1
REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100
:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through
:SET31
set /A dd=31 + %dd%
goto CHKDAY
:SET30
set /A dd=30 + %dd%
goto CHKDAY
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto CHKDAY
:SET29
set /A dd=29 + %dd%
goto CHKDAY
:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%
echo Date %dayCnt% day(s) before %CurDate% is %mm%/%dd%/%yyyy%
Voici un script trouvé sur Experts Exchange.
Il est paramétrable à J-x jours, et prend J-1 par défaut.
Il te suffit de prendre la / les routines qui t'intéressent et les intégrer dans ton code.
J'espère que ça t'aidera
@echo off
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1
if "%dayCnt%"=="" set dayCnt=1
REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100
:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through
:SET31
set /A dd=31 + %dd%
goto CHKDAY
:SET30
set /A dd=30 + %dd%
goto CHKDAY
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto CHKDAY
:SET29
set /A dd=29 + %dd%
goto CHKDAY
:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%
echo Date %dayCnt% day(s) before %CurDate% is %mm%/%dd%/%yyyy%
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
26 sept. 2009 à 12:00
26 sept. 2009 à 12:00
Ben oui je sais, mais a priori, y'a pas vraiment de moyen de contournement simple, car il y a pas mal de paramètres à passer.
Cela dit, vu qu'il semble que seule la partie J-1 t'intéresse (donc la valeur définie par défaut dans le script), tu peux fortement alléger le code.
Cela dit, vu qu'il semble que seule la partie J-1 t'intéresse (donc la valeur définie par défaut dans le script), tu peux fortement alléger le code.
Utilisateur anonyme
26 sept. 2009 à 13:00
26 sept. 2009 à 13:00
Bon, j'avoue que quelques explications s'imposent :o)
D'abord, il faut paramétrer l'année en cours, sinon ça marche beaucoup moins bien... Donc :
set yyyy=2009
Deuxième truc : il faut remplacer le "Echo Date...." de la fin par ta procédure de création en récupérant les bons paramètres pour le nom du répertoire.
Troisio : la procédure attend une entrée de ta part. Donc, une fois que tu as tout modifié comme il faut, tu appelles le script en ajoutant le paramètre 1 pour J-1.
Donc, si ton script s'appelle create_rep.bat tu l'appelles par :
create_rep.bat 1
C'est un peu plus clair comme ça ?
D'abord, il faut paramétrer l'année en cours, sinon ça marche beaucoup moins bien... Donc :
set yyyy=2009
Deuxième truc : il faut remplacer le "Echo Date...." de la fin par ta procédure de création en récupérant les bons paramètres pour le nom du répertoire.
Troisio : la procédure attend une entrée de ta part. Donc, une fois que tu as tout modifié comme il faut, tu appelles le script en ajoutant le paramètre 1 pour J-1.
Donc, si ton script s'appelle create_rep.bat tu l'appelles par :
create_rep.bat 1
C'est un peu plus clair comme ça ?