Problème script batch

Fermé
lee034 - 26 sept. 2009 à 11:30
 Utilisateur anonyme - 26 sept. 2009 à 14:37
Salut,

Voilà, j'ai un script qui récupère un fichier zip à la date du jour.
il le transfert via FTP sur un autre serveur tout en créant un répertoire avec la date du jour.

la création du repertoire avec la date du jour => Ok

Mais je souhaiterais modifier ce répertoire à sa création avec la date du jour à J-1
Si qq'un connait un solution, je suis préneur :)
voici un bout du code :

For /F "tokens=2,3,4 delims=/ " %%a IN ('date /t') DO set d2amj=%%c%%b%%a
set r_dest=D:\logs\%d2amj%
if not exist %r_dest% md %r_dest%

merci pour votre aide.
A voir également:

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
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...
0
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
0
Utilisateur anonyme
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%
0
merci pour votre aide.
@bugCrusher- Il est lourd ton morceau de code. Mais je vais tester ça. ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
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.
0
enfaite je veux juste pouvoir créer un répertoire avec la date du jour à J-1
0
Utilisateur anonyme
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 ?
0
on va essayer tout ça ! meerci pour ton aide BugCrusher
0
Utilisateur anonyme
26 sept. 2009 à 14:37
Y'a pas de quoi, DOS est notre ami :o)
0

Discussions similaires