Bonjour à tous
Je suis entrain de faire un fichier bat pour copier le fichier log de la veille d une application.
Le répertoire source (répertoire log de l'application) contient 31 fichiers sur lesquels l'application repasse pour inscrire les log du jour en boucle j'ai donc uniquement un historique de 31 glissant plus ou moins (mois de de 30, 29 et 28)...
voici comment sont nommés ces fichiers Tracer01.log .... Tracer31.log
je cherche donc juste a copier le ficher de la veille dans un autre répertoire en le renommant comme suit :
TracerJJ_mm_aaaa.log
j'ai commencé mon fichier comment suit je rencontre juste un problème dans mes conditions pour tester le cas du premier jour du mois ou la date de veille et soit le 31 ou 30 ou 28 ou 29.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 echo on REM copy e:\temp\test\*.* e:\temp\test2\*.* REM repertoire source set cpsource=C:\s1\ REM repertoire destination set cpdest=C:\d1\ set racine=Tracer REM date du jour set j_date=%date% REM variable jour, mois, annee set jour=%j_date:~0,2% set mois=%j_date:~3,2% set annee=%j_date:~6,4% set vj = jour set vm = mois if %jour:~0,1%==0 set /a vj=%jour:~1,1% if %mois:~0,1%==0 set /a vm=%mois:~1,1% if %vj% LSS 2 set /a vm=%vm%-1 if %vm% LSS 2 ( set /a annee=%annee%-1 set /a vm=12) rem if %vj% EQU 1 ( set dernierj=31 REM dernier jour du mois de avril, juin, septembre, novembre if %vm% EQU 4 ( set /a dernierj=30) if %vm% EQU 6 ( set /a dernierj=30) if %vm% EQU 9 ( set /a dernierj=30) if %vm% EQU 11 ( set /a dernierj=30) set res_bix=1 REM dernier jour du mois de fevrier if %vm% EQU 2 ( set /a res_bix=0 set /a div_annee = %annee%/4 set /a ret_div = %div_annee%*4 set /a res_bix = %annee%-%ret_div% set /a dernierj=28 ) if %res_bix% EQU 0 ( set /a dernierj=29 ) rem ) fin du premier si pour vj est égale à 1 set /a vj=%dernierj% REM DEBUG echo j_date %j_date% jour %jour% mois %mois% annee %annee% echo vj %vj% vm %vm% echo res_bix %res_bix% div_annee %div_annee% dernierj %dernierj% echo racine %racine% pause set fich=%racine%%vj%.log set fich2=%racine%%vj%_%vm%_%annee%.log echo %fich% %fich2% set source=%cpsource%%fich% set dest=%cpdest%%fich2% echo %source% echo %dest% REM copie du fichier log : copy %source% %dest% pause echo on
j'ai mis ces deux lignes en commentaires pour le moment car elle font planté le script.
sinon sans ces deux ligne j ai plus ou moins le résultat voulu. je suis surement pas loin du but.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 rem if %vj% EQU 1 ( set dernierj=31 rem ) fin du premier si pour vj est égale à 1
le script n est peut être pas des plus académique désolé je suis pas un spécialiste du batch.
Merci de votre aide et du coup de pousse.![]()
Partager