Problème script batch
lee034
-
Utilisateur anonyme -
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.
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:
- Problème script batch
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Batch converter - Télécharger - Photo & Graphisme
9 réponses
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
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
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.
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 ?