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 :

Compare deux répertoire en Powershell


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Compare deux répertoire en Powershell
    Bonjour,

    J'ai fait un script en powershell, il fonctionne bien mais fait pas ce que je recherche

    j'ai cree 3 répertoires (rep1, rep2 et dest)
    dans rep1 j'ai mis 2 fichiers (toto.txt et tata.txt)
    dans rep2 j'ai mis 1 fichier (toto.txt et titi.txt)

    Lorsque je lance le script il déplace tata.txt dans le répertoire dest

    Ce que je recherche, si il trouve un fichier identique dans rep1 et rep2, il déplace le fichier identique qu'il a trouvé de rep1 vers dest.
    Le code ci-dessous fonctionne mais fait l'inverse de ce que je recherche. il compare les deux répertoires et déplace le fichier (tata.txt) qu'il n'a pas trouve dans rep2 vers dest
    Or j'aurais voulu qu'il déplace plutôt le fichier toto.txt de rep1 vers dest car il existe dans rep2

    Voici le code

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $folder1 = Get-childitem "C:\rep1"
    $folder2 = Get-childitem "C:\rep2"
    $folder3 = Get-childitem "C:\dest"
     
    Compare-Object $Folder1 $Folder2 -Property Name, Length  | Where-Object {$_.SideIndicator -eq "<="} | ForEach-Object {
            move-Item "C:\rep1\$($_.name)" -Destination "C:\dest" -Force
            }

    Je pense qu'il faut modifier cette ligne mais je trouve pas comment faire :-(

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    Compare-Object $Folder1 $Folder2 -Property Name, Length  | Where-Object {$_.SideIndicator -eq "<="}

    Pourrait on m'aider SVP?
    Merci par avance

    Seb

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour,

    Essayez comme ceci :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Compare-Object -DifferenceObject (Get-childitem "C:\rep2") -ReferenceObject (Get-childitem "C:\rep1") -IncludeEqual -Property Name,Length | Where-Object {$_.SideIndicator -eq "=="} | ForEach-Object {
            move-Item "C:\rep1\$($_.name)" -Destination "C:\dest" -Force
            }

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je n'avais pas vu la réponse de @barnabe0057
    Je propose à peu prêt la même chose, le Where-Object est inutile puisque nous demandons uniquement les égalités

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $folder1 = Get-childitem "C:\rep1"
    $folder2 = Get-childitem "C:\rep2"
     
    Compare-Object -ReferenceObject $Folder1 -DifferenceObject $Folder2 -Property Name, Length -ExcludeDifferent -IncludeEqual | ForEach-Object {Move-Item -LiteralPath "C:\rep1\$($_.name)" -Destination "C:\dest" -Force}

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour vos réponses. ça fonctionne. Par contre si l'extension est différent mais le nom est identique il prend pas en compte le fichier.
    En fait il faut qu'il compare que le nom du fichier sans prendre en compte l'extension.
    Le script fonctionne, mais il faudrait le modifier pour qu'il compare que le nom du fichier sans l'extension. je sais pas comment faire. Quelqu'un pourrait il m'aider ? merci par avance


    Seb

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bah c'est toi qui lui a dit de faire ca

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $folder1 = Get-childitem "C:\rep1"
    $folder2 = Get-childitem "C:\rep2"
     
    Compare-Object -ReferenceObject $Folder1 -DifferenceObject $Folder2 -Property BaseName, Length -ExcludeDifferent -IncludeEqual | ForEach-Object {Move-Item -LiteralPath "C:\rep1\$($_.name)" -Destination "C:\dest" -Force}

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci pour ta réponse ericlm128
    Mais c'est toujours pas bon. Ton script me déplace tout le répertoire rep1 dans le répertoire dest. J'ai vu que tu as mis BaseName. J'ai essayé avec FileName c'est pareil :-(

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Il y avait un oubli mais de la à tout copier je ne comprend pas.
    Teste avec la correction

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $folder1 = Get-childitem "C:\rep1"
    $folder2 = Get-childitem "C:\rep2"
     
    Compare-Object -ReferenceObject $Folder1 -DifferenceObject $Folder2 -Property BaseName, Length -ExcludeDifferent -IncludeEqual -PassThru | ForEach-Object {Move-Item -LiteralPath "C:\rep1\$($_.name)" -Destination "C:\dest" -Force}

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Tu peux passer le sujet en résolu si c'est le cas

Discussions similaires

  1. [PowerShell] synchronisée deux répertoires Powershel
    Par samirCA007 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 19/03/2018, 10h37
  2. comparer deux répertoires sous linux
    Par bigs3232 dans le forum Linux
    Réponses: 13
    Dernier message: 22/09/2011, 17h39
  3. Comparer les fichiers de deux répertoires
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2010, 00h04
  4. Comparer les fichiers de deux répertoires
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 19h44
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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