Problème script batch

lee034 -  
 Utilisateur anonyme -
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.
Configuration: Linux
Firefox 3.0.14

9 réponses

  1. kentin5601 Messages postés 3197 Date d'inscription   Statut Membre Dernière intervention   406
     
    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
  2. lee034
     
    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
  3. Utilisateur anonyme
     
    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
  4. lee034
     
    merci pour votre aide.
    @bugCrusher- Il est lourd ton morceau de code. Mais je vais tester ça. ;)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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