Flash info

"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information. "

Albert Einstein (1879-1955)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
Mitakue
Utilisateur

PowerShelleur Débutant
Messages: 43
graphgraph
Karma: 0  
Comparaison et suppression de fichier en fonction - 17/03/20 15:13 Bonjour,

Cela fait bien longtemps que je n'ai rien posté ici car je n'avais plus l'occasion de faire du powershell dans le cadre de mon travail mais aujourd'hui je dois m'y remettre.

Je dois écrire un script qui va récupérer le nom de fichier dans deux répertoires distinct, stocker ces noms de fichiers dans un csv ou dans un tableau, comparer les noms des fichiers et si il trouve une correspondance sur une chaine de caractère alors il doit supprimer l'un des fichiers.

Code:

 $lagos "P:\lagos\PdfFactures\" $belem "P:\belem\idefac\" $result_belem = @(get-childitem -Path $belem select Name) $result_lagos = @(get-childitem -Path $lagos -exclude *TEST* | where {$_.Extension -eq ".pdf"} | select Name) foreach ($file_belem in $result_belem)     {         foreach ($file_lagos in $result_lagos)             {                 if ($file_lagos -like "*$file_belem*")                     {                         write-host $file_lagos                         #remove-item -Path $file2                     }             }     }



En somme, je liste le contenu des dossiers :

- P:lagosPdfFactures
- P:belemidefac

Je compare le résultat qui ressemble à ça :

Name
----
C200302879.ok
C200302880.ok
C200302881.ok
C200302882.ok
C200302883.ok
C200302884.ok
C200302885.ok
C200302886.ok
C200302887.ok
C200302888.ok
C200302889.ok
C200302890.ok
C200302891.ok
C200302892.ok
C200302893.ok
C200302894.ok
C200302895.ok
C200302896.ok
C200302897.ok
C200302898.ok
C200302899.ok
C200302900.ok
C200302901.ok
C200302902.ok
C200302903.ok
C200302904.ok
C200302905.ok
C200302906.ok
C200302907.ok
C200302908.ok
C200302909.ok
C200302910.ok
C200302911.ok
C200302912.ok
C200302913.ok
C200302914.ok
C200302915.ok
C200302916.ok
C200302917.ok

Pour le dossier P:belemidefac et à ça :

Name
----
Pdf460428-C200302879a.pdf
Pdf460428-C200302880aD.pdf
Pdf481606-C200302881a.pdf
Pdf481606-C200302882aD.pdf
Pdf493343-C190401003a.pdf
Pdf493343-C190401003aD.pdf
Pdf511521-C170104668t.pdf
Pdf545769-C171103049.pdf
Pdf545769-C171103049D.pdf
Pdf545783-C171103059.pdf
Pdf545783-C171103059D.pdf
Pdf547896-C171103062.pdf
Pdf547896-C171103062D.pdf
Pdf548044-C171103082.pdf
Pdf548044-C171103082D.pdf

Pour le dossier P:lagosPdfFactures

Ensuite mon script doit comparer le nom des fichiers présents et si il trouve une correspondance dans le nom supprimer les fichiers dans le dossier P:lagosPdfFactures

Les noms de fichier ne sont pas identique et c'est la que je bloque, j'ai essayé d'utiliser le comparateur -like de plusieurs manières mais rien n'y fait, j'ai interverti mes foreach et écumer le net sans rien trouver.

Je ne serais du coup pas contre un peu d'aide de votre part.

Merci d'avance,

Mitakue
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1666
graphgraph
Karma: 121  
Re:Comparaison et suppression de fichier en fonction - 21/03/20 11:58 salut Mitakue

tu a oublie que tu travail avec des objets !!

quand tu fais ton "| select Name" tu a un objet dans $result_xxxx qui contient une propriété Name
tu doit donc lire ta variable en donnent le nom de la propriété
j'ai modifier le if dans le script ci dessous

j'ai remplacer Name par BaseName pour avoir le nom du fichier sans exention pour plus tranquille

Code:

 $lagos "e:\temp\lagos\" $belem "e:\temp\belem\" $result_belem = @(get-childitem -Path $belem select BaseName) $result_lagos = @(get-childitem -Path $lagos -exclude *TEST* | where {$_.Extension -eq ".pdf"} | select BaseName) foreach ($file_belem in $result_belem)     {         foreach ($file_lagos in $result_lagos)             {                 if ($file_lagos.BaseName -like "*$($file_belem.BaseName)*")                     {                         write-host $file_lagos.BaseName                         #remove-item -Path $file2                     }             }     }

  | | L'administrateur a désactivé l'accés public en écriture.
Mitakue
Utilisateur

PowerShelleur Débutant
Messages: 43
graphgraph
Karma: 0  
Re:Comparaison et suppression de fichier en fonction - 23/03/20 07:56 Hello 6ratgus,

Je te remercie pour ta réponse. En effet j'avais oublié.
J'étais pas passé très loin de ce résultat au début de l'écriture de mon script mais tu m'a fait un petit rappel qui va bien m'aider car j'aurais d'autres script un peu dans le même genre à faire dans les semaines qui viennent.

Bonne journée et prudence en cette période.

Mitakue
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com