Comparaison et suppression de fichier en fonction

Plus d'informations
il y a 2 mois 2 semaines #29735 par Mitakue
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:1]$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
}
}
}[/code:1]

En somme, je liste le contenu des dossiers :

- P:\lagos\PdfFactures\
- P:\belem\idefac\

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:\belem\idefac\ 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:\lagos\PdfFactures\

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:\lagos\PdfFactures\

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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 1 semaine #29743 par 6ratgus
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:1]$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
}
}
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 1 semaine #29747 par Mitakue
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

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.143 secondes
Propulsé par Kunena