Question rechercherles fichiesr en double sur un serveur

Plus d'informations
il y a 7 ans 8 mois #15505 par Nicolas Guerin
Bonjour, je suis aussi intéressé par ce script.

Mais je n'arrive pas à récupérer les log entière de celui-ci.

[code:1]$src = Get-ChildItem \"E:\Test\" -Recurse | Where-Object {$_.PSIsContainer -eq 0} | select name,
fullname,length,lastwritetime
for ($i = 0; $i -lt $src.count; $i++)
{
for ($j = $i+1; $j -lt $src.count; $j++)
{
if ($src[$j].name -eq $src[$i].name -and $src[$j].length -eq $src[$i].length -and $src
[$j].lastwritetime -eq $src[$i].lastwritetime)
{
$src[$j] | export-csv c:\logtest.csv
}
}
}
[/code:1]

J'ai déjà testé en rajoutant une autre variable
$log = $log + $src[$j] mais je suppose que $log et $src[$j] non pas du tout la même forme.

Faut t'il que je créer un variable $log sous la même forme que $src[$j]? Si oui comment faire?

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

Plus d'informations
il y a 7 ans 8 mois #15506 par Philippe
salut Nicolas.18

le plus simple (pour moi), c'est de faire une fonction

[code:1]Function Get-doublon {
$src = Get-ChildItem \"E:\test\" -Recurse | Where-Object {$_.PSIsContainer -eq 0} | select name, fullname,length,lastwritetime
for ($i = 0; $i -lt $src.count; $i++)
{
for ($j = $i+1; $j -lt $src.count; $j++)
{
if ($src[$j].name -eq $src[$i].name -and $src[$j].length -eq $src[$i].length -and $src[$j].lastwritetime -eq $src[$i].lastwritetime)
{
$src[$j]
}
}
}
}

[/code:1]

et de remvoyer le resultat de la fonction dans le pipeline ou dans une variable
[code:1]
Get-doublon | export-csv c:\logtest.csv

$doublon = get-doublon
[/code:1]

il ne te reste plus qu'a finir la fonction en donnant le chemins par parametre.

Mais en programmation et donc avec powershell, il y a souvent plusieurs techniques disponibles pour effectuer une meme action, c'est ce qui permet de s'adapter au mieu a chaque situation.<br><br>Message édité par: 6ratgus, à: 1/08/13 18:33

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

  • maiden65
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 7 ans 8 mois #15518 par maiden65
Réponse de maiden65 sur le sujet Re:rechercherles fichiesr en double sur un serveur
j'ai ce bout de script que j'ai testé sur 1 lecteur

[code:1]
$src = Get-ChildItem \&quot;H:\\&quot; -include *.mp3,*.avi -Recurse | Where-Object {$_.PSIsContainer -eq 0} | select directoryname, name, length | sort-object name
$src_unique=$src | select name | select-object name -unique

$src_unique | foreach {
$nom_search=$_.name
$cpt=0
$src | where { $_ -match \&quot;$nom_search\&quot; }| foreach { $cpt++ }
if ($cpt -gt 1) {
write-host \&quot;le fichier\&quot; $nom_search \&quot;est \&quot;$cpt \&quot;fois dans le fichier\&quot;
}
}
[/code:1]

donne donc le nom des fichiers et le nombre de fois qu'il est sur le disque...

[code:1]
le fichier 20 - Piste 20.mp3 est 2 fois dans le fichier
le fichier 21 - Piste 21.mp3 est 2 fois dans le fichier
le fichier 22 - Piste 22.mp3 est 2 fois dans le fichier
le fichier 23 - Piste 23.mp3 est 2 fois dans le fichier
le fichier 24 - Piste 24.mp3 est 2 fois dans le fichier
le fichier 25 - Piste 25.mp3 est 2 fois dans le fichier
le fichier 26 - Piste 26.mp3 est 2 fois dans le fichier
le fichier 27 - Piste 27.mp3 est 2 fois dans le fichier
le fichier 28 - Piste 28.mp3 est 2 fois dans le fichier
le fichier 29 - Piste 29.mp3 est 2 fois dans le fichier
le fichier 30 - Piste 30.mp3 est 2 fois dans le fichier
le fichier 31 - Piste 31.mp3 est 2 fois dans le fichier
le fichier 32 - Piste 32.mp3 est 2 fois dans le fichier
[/code:1]

Cette recherche peut être couplée avec la taille du fichier pour encore affiné l'équité du fichier.

Il suffit de mettre ce résultat dans un fichier et de récupérer ensuite les infos du répertoire de chacun des fichier.
Et de faire la somme de l'espace occupé

C'est un début je vais tenter de l'améliorer...
Par contre je part en vacance ce soir et je ne pourrais pas m'y remettre avant la fin du mois...

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

Plus d'informations
il y a 7 ans 8 mois #15524 par Matthew BETTON
Bonjour,

Ici et là, on peut trouver des idées et des exemples sur ce sujet.

En général, il est préférable de récupérer le hash de chaque fichier pour effectuer la comparaison.

Find Duplicate Files With PowerShell

How to find duplicated files on network share using PowerShell script, based on MD5 hash comparison

finddupe.ps1 by James Gentile

Duplicate File Finder With Powershell! (ici sur le nom de fichier)

@ +

Matthew BETTON

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

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