Bonjour à tous!
J'ai un problème très bizarre, en faite j'ai créé un programme qui doit trier les fichiers xml d'un dossier selon la date. Ceux plus vieux de 3 mois sont supprimés, ceux ayant moins de 3 mois et ayant plus de 8 jours sont déplacés dans un autre dossier.
Mon programme fonctionne bien sauf pour les mois de août et septembre, pour ces deux mois je ne peux pas faire de calcul avec le numéro du mois.
Voici mon code
voici mon erreur lors de la multiplication par le numéro de mois :
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 @echo off title gestion des logs set cheminLogs=c:\essai set dateSys=%DATE% cd %cheminLogs% if EXIST lastTwoMonths goto move mkdir lastTwoMonths :move for /f "tokens=3 delims=/ " %%b in ('date/t') do set mois=%%b for /f "tokens=2 delims=/ " %%b in ('date/t') do set nbJour=%%b for /f "tokens=4 delims=/ " %%b in ('date/t') do set annee=%%b set /A annee=%annee%-1900 set /A mois=12*%annee%+%mois% set /A nbjour=365*%annee%+30*%mois%+%nbjour% for /r %%a in (*.xml) do ( set nom=%%a call :traitement ) :traitement for /f "skip=4 tokens=1" %%a in ('dir "%nom%" /tw /-c /a:-d-s-h^|find /v "(s)"') do set dateModif=%%a for /f "tokens=1 delims=/ " %%b in ('echo %dateModif%') do set jourModif=%%b for /f "tokens=2 delims=/ " %%b in ('echo %dateModif%') do set moisModif=%%b for /f "tokens=3 delims=/ " %%b in ('echo %dateModif%') do set anneeModif=%%b set /A anneeModif = %anneeModif%-1900 set /A moisModif=12*%anneeModif%+%moisModif% set /A jourModif=365*%anneeModif%+30*%moisModif%+%jourModif% set /A diffMois=%mois%-%moisModif% if %mois% equ %moisModif% goto garder if %diffMois% lss 3 goto garder del %nom% goto fin rem passage à la fin de la boucle et passage au fichier suivant :garder set /A difference=%nbJour%-%jourModif% if %difference% lss 8 goto laisser echo on déplace le log move %nom% %cheminLogs%\lastTwoMonths goto fin :laisser echo ce log n'est pas deplace :fin
Je suis en environnement windows 2000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Nombre non valide. Les constantes numériques doivent être soit décimales <17>, soit hexadécimales <0x11>, soit octales <021>
Merci d'avance
Partager