Question
[Résolu]unique et non unique
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #20080
par Axel
Réponse de Axel sur le sujet Re:unique et non unique
bonjour merci pour votre aide, je viens de tester mais j'ai toujours les deux mêmes erreurs
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 11 mois #20081
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:unique et non unique
La version corrigée :
[code:1]
.{
$length = read-host \"`nIndiquez la taille minimum en octet utilisé lors de l'analyse des fichiers \"
$taille = $length
#$folderpath = Select-Folder -path \"C:\\"
$folderpath = 'C:\temp'
#recherche des fichiers par rapport à la taille
$Files = @(
Dir $folderpath * -Recurse -Force |
Where-Object{-not $_.PSisContainer}|
Where-Object {$_.length -gt $taille}
)
if ($Files.Count -gt 0)
{
#$Choice = YesNo -message \"Voulez-vous calculer le MD5 des fichiers retenus ?\"
#$isMD5=$Choice -eq $Yes
$isMD5=$True
#Contient les fichiers de même taille
$doublons = $files |
Sort-Object length |
Foreach {
Write-Warning \"file : $($_.fullname)\"
if ($isMD5)
{
try {
$Hash=(Get-FileHash $_.FullName).MD5
} catch {
Write-error $_
$Hash=$null
}
#Si demandé, ajoute la propriété MD5 à chaque objet fichier
Add-Member -InputObject $_ -MemberType NoteProperty -Name MD5 -Value $Hash
}
Write-Output $_
}|
Group-Object length |
Where-Object {$_.count -gt 1}
#En deux passes, car le MD5 est nécessaire pour ce traitement
if ($isMD5)
{
#Contient les fichiers de même taille ayant un MD5 identique
$Identiques= $doublons|
Where-Object {
#Fichiers de même taille
$Current=$_.Group
#Mémorise un MD5, le premier
$FileHash=$Current[0].MD5
#Construit un tableau contenant tous les MD5
$AllMD5=$Current|Foreach { $_.MD5}
#Tous les MD5 doivent être identique
$Current.Count -eq ( $AllMD5 -eq $FileHash).Count
}
}
else
{$Identiques=@()}
$rapport = $Identiques |
foreach-object {
#boucle sur la collection group de chaque doublon
$_.group |
foreach-object {
#boucle sur la collection de fichiers de chaque group
new-rapport -fichier $_
}#file
}#group
}
else
{Write-Warning \"La recherche n'a pas trouvée de fichier\"}
}
[/code:1]
Le code ne testait pas le cas où la recherche ne renvoyait pas de fichier.
C'est à toi de tester les différents scénarios et à adapter le code, on ne peut pas tout faire à ta place !
Résultat de mes tests :
[code:1]
#Taille =500000
#AVERTISSEMENT : La recherche n'a pas trouvé de fichier
#Taille =1024
$Doublons
# Count Name Group
#
----
# 3 1622 {Test2- Copie.Txt, Test2 - Copie.Txt.bak, Test2.Txt}
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Doublons|% {$_.group|% {$_.MD5}}
# 6FDB85E79BF15478A1125A124BF83C34
# 37CFBBB98CCA2BCA9E67830AB5921DB
# 37CFBBB98CCA2BCA9E67830AB5921DB
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
$Identiques
# Count Name Group
#
----
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Identiques.Group|% {$_.MD5}
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
#Taille: 1024 ou 500000
#Si $isMD5=$false
#$Identiques est un tableau vide
[/code:1]
[code:1]
.{
$length = read-host \"`nIndiquez la taille minimum en octet utilisé lors de l'analyse des fichiers \"
$taille = $length
#$folderpath = Select-Folder -path \"C:\\"
$folderpath = 'C:\temp'
#recherche des fichiers par rapport à la taille
$Files = @(
Dir $folderpath * -Recurse -Force |
Where-Object{-not $_.PSisContainer}|
Where-Object {$_.length -gt $taille}
)
if ($Files.Count -gt 0)
{
#$Choice = YesNo -message \"Voulez-vous calculer le MD5 des fichiers retenus ?\"
#$isMD5=$Choice -eq $Yes
$isMD5=$True
#Contient les fichiers de même taille
$doublons = $files |
Sort-Object length |
Foreach {
Write-Warning \"file : $($_.fullname)\"
if ($isMD5)
{
try {
$Hash=(Get-FileHash $_.FullName).MD5
} catch {
Write-error $_
$Hash=$null
}
#Si demandé, ajoute la propriété MD5 à chaque objet fichier
Add-Member -InputObject $_ -MemberType NoteProperty -Name MD5 -Value $Hash
}
Write-Output $_
}|
Group-Object length |
Where-Object {$_.count -gt 1}
#En deux passes, car le MD5 est nécessaire pour ce traitement
if ($isMD5)
{
#Contient les fichiers de même taille ayant un MD5 identique
$Identiques= $doublons|
Where-Object {
#Fichiers de même taille
$Current=$_.Group
#Mémorise un MD5, le premier
$FileHash=$Current[0].MD5
#Construit un tableau contenant tous les MD5
$AllMD5=$Current|Foreach { $_.MD5}
#Tous les MD5 doivent être identique
$Current.Count -eq ( $AllMD5 -eq $FileHash).Count
}
}
else
{$Identiques=@()}
$rapport = $Identiques |
foreach-object {
#boucle sur la collection group de chaque doublon
$_.group |
foreach-object {
#boucle sur la collection de fichiers de chaque group
new-rapport -fichier $_
}#file
}#group
}
else
{Write-Warning \"La recherche n'a pas trouvée de fichier\"}
}
[/code:1]
Le code ne testait pas le cas où la recherche ne renvoyait pas de fichier.
C'est à toi de tester les différents scénarios et à adapter le code, on ne peut pas tout faire à ta place !
Résultat de mes tests :
[code:1]
#Taille =500000
#AVERTISSEMENT : La recherche n'a pas trouvé de fichier
#Taille =1024
$Doublons
# Count Name Group
#
----
# 3 1622 {Test2- Copie.Txt, Test2 - Copie.Txt.bak, Test2.Txt}
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Doublons|% {$_.group|% {$_.MD5}}
# 6FDB85E79BF15478A1125A124BF83C34
# 37CFBBB98CCA2BCA9E67830AB5921DB
# 37CFBBB98CCA2BCA9E67830AB5921DB
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
$Identiques
# Count Name Group
#
----
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Identiques.Group|% {$_.MD5}
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
#Taille: 1024 ou 500000
#Si $isMD5=$false
#$Identiques est un tableau vide
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #20096
par Axel
Réponse de Axel sur le sujet Re:unique et non unique
bonjour Laurent, merci de votre aide mais je vais reprendre mon code à 0, désolé pour le temps perdu
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #20157
par Axel
Réponse de Axel sur le sujet Re:unique et non unique
[code:1]
$Doublons
# Count Name Group
#
----
# 3 1622 {Test2- Copie.Txt, Test2 - Copie.Txt.bak, Test2.Txt}
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Doublons|% {$_.group|% {$_.MD5}}
# 6FDB85E79BF15478A1125A124BF83C34
# 37CFBBB98CCA2BCA9E67830AB5921DB
# 37CFBBB98CCA2BCA9E67830AB5921DB
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
$Identiques
# Count Name Group
#
----
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Identiques.Group|% {$_.MD5}
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
[/code:1]
pourquoi ne pas garder \"37CFBBB98CCA2BCA9E67830AB5921DB\" car il y en a 2 aussi ?<br><br>Message édité par: Harcide, à: 16/06/15 15:26
$Doublons
# Count Name Group
#
----
# 3 1622 {Test2- Copie.Txt, Test2 - Copie.Txt.bak, Test2.Txt}
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Doublons|% {$_.group|% {$_.MD5}}
# 6FDB85E79BF15478A1125A124BF83C34
# 37CFBBB98CCA2BCA9E67830AB5921DB
# 37CFBBB98CCA2BCA9E67830AB5921DB
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
$Identiques
# Count Name Group
#
----
# 2 4854 {Test.txt, Test - Copie.txt.bak}
$Identiques.Group|% {$_.MD5}
# A3D8CC599878BD9AC252EBAC02BD6
# A3D8CC599878BD9AC252EBAC02BD6
[/code:1]
pourquoi ne pas garder \"37CFBBB98CCA2BCA9E67830AB5921DB\" car il y en a 2 aussi ?<br><br>Message édité par: Harcide, à: 16/06/15 15:26
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 10 ans 11 mois #20159
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:unique et non unique
Harcide écrit:
Non, il faut donc la préciser.
-s'il existe deux fichiers identiques ( count -eq 2)
-s'il existe au moins deux fichiers identiques (count -ge 2)
Ce n'est pas la même chose.
Il faut modifier le test et le commentaire \"#Tous les MD5 doivent être identique\" puisque c'est faux.
Oui, mais toi tu connais à peu près le fonctionnel moi pas. Il en existe 3 dont deux identiques, cette règle est-elle précisé quelque part ?pourquoi ne pas garder \"37CFBBB98CCA2BCA9E67830AB5921DB\" car il y en a 2 aussi
Non, il faut donc la préciser.
-s'il existe deux fichiers identiques ( count -eq 2)
-s'il existe au moins deux fichiers identiques (count -ge 2)
Ce n'est pas la même chose.
Il faut modifier le test et le commentaire \"#Tous les MD5 doivent être identique\" puisque c'est faux.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 10 ans 11 mois #20160
par Axel
désolé si je n'étais pas plus clair
Réponse de Axel sur le sujet Re:unique et non unique
on remarque donc que 3 fichiers ont la même taille que d'autres mais ils n'ont pas le même MD5 alors ils sont unique donc je ne voudrais pas qu'ils s'affichent
désolé si je n'étais pas plus clair
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu]unique et non unique