IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Performance Copy-Item par rapport au xcopy du batch [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Performance Copy-Item par rapport au xcopy du batch
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xcopy /d /c /y \\repertoire_source C:\repertoire_destination
    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).
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dernierFichierDestination = Get-ChildItem $repertoireDestination -File -Recurse | Sort-Object LastAccessTime -Descending | Select-Object -First 1
    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).

    En espérant que vous ayez compris mon soucis, merci d'avance de votre aide !

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Mai 2020
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2020
    Messages : 288
    Points : 386
    Points
    386
    Par défaut
    Bonjour,

    Vous pouvez tenter d'utiliser ce type de commande :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Compare-Object $Folder1 $Folder2 -Property Name, Length  | Where-Object {$_.SideIndicator -eq "<="} | ForEach-Object {Copy-Item "C:\Folder1\$($_.name)" -Destination "C:\Folder3" -Force}

    Je vous laisse la peaufiner pour qu'elle réponde à votre besoin.
    La folie, c’est se comporter de la même manière et s’attendre à un résultat différent.

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 192
    Points : 5 774
    Points
    5 774
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $exclude = Get-ChildItem -Recurse $repertoireDestination
    Copy-Item -Recurse $repertoireSource $repertoireDestination -Exclude $exclude
    https://stackoverflow.com/questions/...exist/25918011

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Merci de vos retours je vais essayé ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copie valeurs par rapport à un champ Quantité
    Par maximilien59 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/11/2011, 09h16
  2. [Turbo Pascal] Calculer le net à payer par rapport au nombre de copies
    Par agan2012 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 21/11/2008, 19h54
  3. performances de MySQL par rapport à HyperFile C/S
    Par foulla dans le forum Administration
    Réponses: 3
    Dernier message: 12/06/2008, 12h16
  4. [Conception] Performances par rapport à un nombre élevé de requêtes INSERT
    Par phicarre dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/01/2008, 12h03
  5. [10][Logiciel] Imprimer un nb de copie par rapport à un champs num.
    Par jboumaaz dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 25/02/2007, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo