- forum
- PowerShell
- Entraide pour les débutants
- [Résolu] Suppression des fichiers corrompus ou illisibles
Résolu
[Résolu] Suppression des fichiers corrompus ou illisibles
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
as-tu reçu mon dernier message ? celui-ci a été effacé suite à la migration du forum.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Non, il ne l'a pas eu. Je suis désolé...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Arnaud wrote:
Ok.Non, il ne l'a pas eu. Je suis désolé...
donc ma réponse :
On peut effectivement utiliser un remove-item.
Mais là on couple 2 traitements, ceci est préférable :
function Test-ValidImageFormat {
#Add-Type -AssemblyName System.Drawing
Param([String] $Path)
Try {
Write-Debug "Test file '$path'"
$image=$null
$Image=[System.Drawing.Image]::FromFile($Path)
$Image.Dispose()
Write-Debug "Fichier graphique valide."
Return $true
} catch [System.OutOfMemoryException]{
Write-Debug "Fichier graphique corrompu."
return $false
}
#les autres exceptions sont propagées
}
Ensuite c'est un traitement qui détermine que faire de cette valeur :
Add-Type -AssemblyName System.Drawing
Cd c:\temp\test
$Result=Dir *.jpg,*.png -PipelineVariable CurrentFile |
Foreach-Object {
#ici l'usage du foreach permet d'adresser le scope de la variable CurrentFile
Add-Member -InputObject $CurrentFile -MemberType NoteProperty -Name (Test-ValidImageFormat $CurrentFile) -Value $state -PassThru
}
$Result|
Where-Object { -not $_.isValidFormat }|
Select-Object -ExpandProperty Fullname
Il reste le pb de la dépendance sur l'assembly, le mieux serait d’utiliser un module et un manifeste qui chargerait l'assembly.
Je laisse à d'autre le soin de faire mieux
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Salut,
arj wrote:
Je n'ai pas réussi à utiliser la dernière version cumulant la function + assembly, le résultat me liste tous les fichiers *;jpg et *.png du dossier indépendamment de leur état.
C'est une erreur de réécriture à la volée, désolé.
$Result=Dir *.jpg,*.png -PipelineVariable CurrentFile |
Foreach-Object {
#ici l'usage du foreach permet d'adresser le scope de la variable CurrentFile
Add-Member -InputObject $CurrentFile -MemberType NoteProperty -Name isValidFormat -Value (Test-ValidImageFormat $CurrentFile) -PassThru
}
$Result|
Where-Object { -not $_.isValidFormat }|
Select-Object -ExpandProperty Fullname
arj wrote:
Si possible que le premier script me génère juste un fichier txt contenant tous les fichiers corrompus 1 par ligne ou séparer par un point-virgule
Oui, tu reprends la mécanique et tu changes le traitement, ici la destination :
$Result|
Where-Object { -not $_.isValidFormat }|
Select-Object -ExpandProperty Fullname|
Out-File c:tempToDelete.txt
Type c:tempToDelete.Txt
On pourrait simplifier le tout, mais je te laisse faire le reste
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- arj
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 6
- Remerciements reçus 0
Quelqu'un pour m'indiquer comment rendre le script récursif afin de parcourir toute une arborescence ?
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
il est préférable de gérer la récursion sur le cmdet Get-ChildItem:
Dir *.jpg,*.png -PipelineVariable CurrentFile -Recurse|
FaitQQchose ...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- [Résolu] Suppression des fichiers corrompus ou illisibles
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [Résolu] Suppression des fichiers corrompus ou illisibles