Problème script batch

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. 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 ?
    1. enfaite je veux juste pouvoir créer un répertoire avec la date du jour à J-1
      1. 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.
        1. merci pour votre aide.
          @bugCrusher- Il est lourd ton morceau de code. Mais je vais tester ça. ;)
          1. 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%
            1. 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
              1. 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...