Bonjour,
Je dois refaire des scripts batch de copie de fichiers (images) en powershell et ce qui me paraissait normalement simple me complique un peu la vie...
Le but du script est en quelque sorte de synchroniser 2 répertoires : le répertoire source est alimenté d'une nouvelle image toutes les minutes et le script planifié pour s'exécuter toutes les minutes doit recopier la dernière image vers le répertoire destination.
Donc en batch ça donnait :
L'avantage de cette commande est que, si la copie est manquée pendant un certain temps, lorsque le script sera relancé, toutes les images n'ayant pas été copié pendant ce laps de temps le seront (et pas seulement la dernière image).
Code : Sélectionner tout - Visualiser dans une fenêtre à part xcopy /d /c /y \\repertoire_source C:\repertoire_destination
Ce point là a son importance car il permet de n'avoir aucune manipulation à faire pour récupérer les anciennes images en cas d'échec du script pendant un certain temps.
Mais je n'arrive pas à retrouver ce comportement en powershell.
En effet, la commande de copie Copy-Item va recopier toutes les images de la source vers la destination à chaque exécution.
Ce qui signifie que, si mon répertoire source contient 1200 images déja présentes dans le repertoire destination, au moment de la copie de la 1201ème image, ce sont 1201 fichiers qui seront copiés au lieu d'un seul
J'ai voulu contourné cela en faisant une gymnastique de comparaison de dates de fichiers entre la source et la destination avec
mais cela prend beaucoup trop de temps (car au final j'ai plus d'une dizaine de répertoires sources et destination à synchroniser toutes les minutes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dernierFichierDestination = Get-ChildItem $repertoireDestination -File -Recurse | Sort-Object LastAccessTime -Descending | Select-Object -First 1
En espérant que vous ayez compris mon soucis, merci d'avance de votre aide !
Partager