Question
rechercherles fichiesr en double sur un serveur
- Nicolas Guerin
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 10 ans 7 mois #15505
par Nicolas Guerin
Réponse de Nicolas Guerin sur le sujet Re:rechercherles fichiesr en double sur un serveur
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?
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.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 10 ans 7 mois #15506
par Philippe
Réponse de Philippe sur le sujet Re:rechercherles fichiesr en double sur un serveur
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
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
il y a 10 ans 7 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 \"H:\\" -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 \"$nom_search\" }| foreach { $cpt++ }
if ($cpt -gt 1) {
write-host \"le fichier\" $nom_search \"est \"$cpt \"fois dans le fichier\"
}
}
[/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...
[code:1]
$src = Get-ChildItem \"H:\\" -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 \"$nom_search\" }| foreach { $cpt++ }
if ($cpt -gt 1) {
write-host \"le fichier\" $nom_search \"est \"$cpt \"fois dans le fichier\"
}
}
[/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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 10 ans 7 mois #15524
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:rechercherles fichiesr en double sur un serveur
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
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.085 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- rechercherles fichiesr en double sur un serveur