- 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
- arj
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 3 ans 11 mois - il y a 3 ans 10 mois #29843
par arj
[Résolu] Suppression des fichiers corrompus ou illisibles a été créé par arj
Bonjour,
Je cherche à nettoyer mes différents espaces de stockage contenant essentiellement des photos (.jpg, .jpeg) et vidéos (.avi, .mov, .3gp) ayant des fichiers corrompus ou illisibles.
En gros quand vous allez via l'explorateur de fichier dans un dossier photo et que lorsque vous choisissez l'affichage via grandes icônes et que les miniatures n'apparaissent pas car le fichier est corrompu.
N'ayant pas trouver (ou su paramétrer) de logiciel spécialisé pour ça (style XnView), j'ai dans l'idée de faire un script PowerShell.
Je voudrais savoir si en partant de cet exemple (stackoverflow.com/questions/14614086/how...pg-jpeg-on-a-machine) on pourrait l'améliorer pour cibler les fichiers illisibles et les supprimer à leur découverte ?
J'aurais donc besoin de votre aide déjà pour m'indiquer si un tel script est réalisable, et comment détecter un fichier .jpg ne contenant aucune propriétés d'image ?
Merci
Je cherche à nettoyer mes différents espaces de stockage contenant essentiellement des photos (.jpg, .jpeg) et vidéos (.avi, .mov, .3gp) ayant des fichiers corrompus ou illisibles.
En gros quand vous allez via l'explorateur de fichier dans un dossier photo et que lorsque vous choisissez l'affichage via grandes icônes et que les miniatures n'apparaissent pas car le fichier est corrompu.
N'ayant pas trouver (ou su paramétrer) de logiciel spécialisé pour ça (style XnView), j'ai dans l'idée de faire un script PowerShell.
Je voudrais savoir si en partant de cet exemple (stackoverflow.com/questions/14614086/how...pg-jpeg-on-a-machine) on pourrait l'améliorer pour cibler les fichiers illisibles et les supprimer à leur découverte ?
J'aurais donc besoin de votre aide déjà pour m'indiquer si un tel script est réalisable, et comment détecter un fichier .jpg ne contenant aucune propriétés d'image ?
Merci
Pièces jointes :
Dernière édition: il y a 3 ans 10 mois par Arnaud Petitjean.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 11 mois #29844
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Suppression des fichiers corrompus ou illisibles
Salut,
avant d'aller plus loin il faut déjà savoir déterminer par code si un fichier graphique est erroné.
Essaie avec cette Api : docs.microsoft.com/fr-fr/dotnet/api/syst...mFile_System_String_
S'il est correct le chargement se fera, ensuite reste à supprimer la ressource que cet appel crée :
docs.microsoft.com/fr-fr/dotnet/api/syst...=dotnet-plat-ext-3.1
Dans le cas contraire il faut gérer l'exception déclenchée.
Je n'ai pas de fichier de test sous la main pour coder un exemple...
avant d'aller plus loin il faut déjà savoir déterminer par code si un fichier graphique est erroné.
Essaie avec cette Api : docs.microsoft.com/fr-fr/dotnet/api/syst...mFile_System_String_
S'il est correct le chargement se fera, ensuite reste à supprimer la ressource que cet appel crée :
docs.microsoft.com/fr-fr/dotnet/api/syst...=dotnet-plat-ext-3.1
Dans le cas contraire il faut gérer l'exception déclenchée.
Je n'ai pas de fichier de test sous la main pour coder un exemple...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 11 mois - il y a 3 ans 11 mois #29845
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Suppression des fichiers corrompus ou illisibles
Un début :Ici j'utilise un warning pour la visu uniquement.
J'ai modifié l'entête binaire d'un fichier .jpg pour le test.
A vérifier avec tes fichiers.
Add-Type -AssemblyName System.Drawing
Cd c:\temp\test
Dir *.jpg,*.png|
Foreach-Object {
$CurrentFile="$_"
Try {
$image=$null
$Image=[System.Drawing.Image]::FromFile($CurrentFile)
$Image.Dispose()
Write-host "Fichier chargé: '$CurrentFile'" -fore green
} catch {
#$null -eq image #ici $True
Write-Warning "Fichier erroné : '$CurrentFile'`r`n Cause :`r`n $_"
}
}
J'ai modifié l'entête binaire d'un fichier .jpg pour le test.
A vérifier avec tes fichiers.
Tutoriels PowerShell
Dernière édition: il y a 3 ans 11 mois par Arnaud Petitjean.
Connexion ou Créer un compte pour participer à la conversation.
- arj
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 3 ans 11 mois #29846
par arj
Réponse de arj sur le sujet Re:Suppression des fichiers corrompus ou illisibles
Bonjour et merci Laurent, je vais regarder tout ça et te ferais un retour.
Pour le moment j'ai effectué des recherche en filtrant sur les dimensions d'un fichier jpg via l'explorateur de fichier, c'est laborieux mais ça fonctionne lorsqu'il n'y a pas trop de fichier…
Cdt
Pour le moment j'ai effectué des recherche en filtrant sur les dimensions d'un fichier jpg via l'explorateur de fichier, c'est laborieux mais ça fonctionne lorsqu'il n'y a pas trop de fichier…
Cdt
Connexion ou Créer un compte pour participer à la conversation.
- arj
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 3 ans 11 mois #29847
par arj
Réponse de arj sur le sujet Re:Suppression des fichiers corrompus ou illisibles
Re,
J'ai effectué quelques tests et cela fonctionne.
Les fichiers corrompus sont remontés comme exception avec mémoire insuffisante voir ci-dessous:
PS F:temptest> Add-Type -AssemblyName System.Drawing
PS F:temptest> Cd F:temptest
PS F:temptest> Dir *.jpg,*.png|
>> Foreach-Object {
>> $CurrentFile="$_"
>> Try {
>> $image=$null
>> $Image=[System.Drawing.Image]::FromFile($CurrentFile)
>> $Image.Dispose()
>> Write-host "Fichier chargé: '$CurrentFile'" -fore green
>> } catch {
>> #$null -eq image #ici $True
>> Write-Warning "Fichier erroné : '$CurrentFile'`r`n Cause :`r`n $_"
>> }
>> }
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment1.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment2.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment3.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
Fichier chargé: 'F:temptestno-user.jpg'
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment121.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment122.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment124.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
Fichier chargé: 'F:temptesticon-contact.png'
Fichier chargé: 'F:temptesticon-file.png'
Fichier chargé: 'F:temptesticon-music.png'
PS F:temptest>
Je te joins les fichiers que j'ai utilisés en pj.
Les 3 fichiers chargés sont ok, tous les autres sont HS.
Si je comprends bien ensuite il n'y a plus qu'à changer la dernière ligne pour effectuer une suppression au lieu du warning ?
Encore merci<br><br>Message édité par: arj, à: 16/05/20 21:26
J'ai effectué quelques tests et cela fonctionne.
Les fichiers corrompus sont remontés comme exception avec mémoire insuffisante voir ci-dessous:
PS F:temptest> Add-Type -AssemblyName System.Drawing
PS F:temptest> Cd F:temptest
PS F:temptest> Dir *.jpg,*.png|
>> Foreach-Object {
>> $CurrentFile="$_"
>> Try {
>> $image=$null
>> $Image=[System.Drawing.Image]::FromFile($CurrentFile)
>> $Image.Dispose()
>> Write-host "Fichier chargé: '$CurrentFile'" -fore green
>> } catch {
>> #$null -eq image #ici $True
>> Write-Warning "Fichier erroné : '$CurrentFile'`r`n Cause :`r`n $_"
>> }
>> }
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment1.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment2.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment3.jpg'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
Fichier chargé: 'F:temptestno-user.jpg'
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment121.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment122.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
AVERTISSEMENT : Fichier erroné : 'F:temptestattachment124.png'
Cause :
Exception lors de l'appel de « FromFile » avec « 1 » argument(s) : « Mémoire insuffisante. »
Fichier chargé: 'F:temptesticon-contact.png'
Fichier chargé: 'F:temptesticon-file.png'
Fichier chargé: 'F:temptesticon-music.png'
PS F:temptest>
Je te joins les fichiers que j'ai utilisés en pj.
Les 3 fichiers chargés sont ok, tous les autres sont HS.
Si je comprends bien ensuite il n'y a plus qu'à changer la dernière ligne pour effectuer une suppression au lieu du warning ?
Encore merci<br><br>Message édité par: arj, à: 16/05/20 21:26
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- arj
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 3 ans 11 mois #29848
par arj
Réponse de arj sur le sujet Re:Suppression des fichiers corrompus ou illisibles
fichier zip
La pièce jointe temptest.zip est absente ou indisponible
Pièces jointes :
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
Temps de génération de la page : 0.092 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [Résolu] Suppression des fichiers corrompus ou illisibles