Bonjour,
J'ai deux scripts :
--> Un script qui se déclenche en post-transfert, quand un fichier arrive dans un répertoire, et le déplace dans un autre. (Le déclenchement post-transfert plante de temps en temps.)
--> Une fois le fichier déplacé, j'ai un script qui tourne en tâche de fond, pour traîter ce fichier (multiples opérations)
Dans ce script, je dois donc vérifier qu'aucun fichier n'est resté dans le répertoire original.
Voila donc la boucle que j'ai fait:
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 @echo off& setlocal enabledelayedexpansion [...] :: déclaration des répertoires set rep_entree=D:\test\ah set rep_cible=D:\test\huhuhu :: ==================== debut debloquage fichier bloque dans in =============================== :: Cette boucle permet de déplacer un fichier qui est resté bloqué dans le répertoire in depuis 5 minutes :: ====================================================================================== :: récupération de l'heure actuelle set min_act_tmp=%time:~3,2% if %min_act_tmp% LSS 10 ( set /a min_act = %min_act_tmp:~1,2% - 5) if %min_act_tmp% GEQ 10 ( set /a min_act = %min_act_tmp% - 5) if %min_act% == 0 set min_act=60 if %min_act% == -1 set min_act=59 if %min_act% == -2 set min_act=58 if %min_act% == -3 set min_act=57 if %min_act% == -4 set min_act=56 if %min_act% == -5 set min_act=55 :: récupération de la date et de l'heure du fichier For %%a In ("%rep_entree%\*.*") Do ( set fic_bloque=%%a set fic_bloque=!fic_bloque:é=‚! set fic_bloque=!fic_bloque:è=Š! set fic_bloque=!fic_bloque:à=…! set fic_bloque=!fic_bloque:â=ƒ! set datefic=%%~ta goto traitementFicIn ) :traitementFicIn for /f "tokens=1,2 delims= " %%a in ('echo %datefic%') do ( set heurefic=%%b) for /f "tokens=1,2 delims=:" %%a in ('echo %heurefic%') do ( set min_fic_tmp=%%b) if %min_fic_tmp% LSS 10 ( set /a min_fic = %min_fic_tmp:~1,2%) if %min_fic_tmp% GEQ 10 ( set /a min_fic = %min_fic_tmp%) echo min fic : %min_fic% echo min act : %min_act% ::Comparaison entre l'heure du fichier et l'heure actuelle :: Si l'heure du fichier est plus ancienne que l'heure actuelle, on déplace le fic dans le rep_cible if %min_fic% LEQ %min_act% move %fic_bloque% %rep_cible% if %min_fic% GTR %min_act% goto end :: ==================== FIN debloquage fichier bloque dans in =============================== echo hop on a fini le traitement :end [...]
Le problème :
Il arrive de temps en temps que ma boucle passe juste au moment ou le fichier est arrivé dans le répertoire, elle tente donc de récupérer la date du fichier, mais avant qu'elle ne le fasse, mon script post-transfert l'a bien déplacé dans le répertoire cible... Ca se joue donc a une fraction de seconde, mais ca plante.
Je ne vois pas comment palier ce problème, quelqu'un a une idée ?
Merci !
Partager