Question Problème de redirection avec EXIFTool

Plus d'informations
il y a 1 mois 1 semaine - il y a 1 mois 1 semaine #34619 par Michel380
Bonjour,
J'utilise un script qui contient cette ligne
& $ExifToolName -m -F -q -q -r -ext jpg -p $ExifToolArgs "$FolderPath" >>$TempFile
(windows 10, version powershell= je ne sais pas)

Ca fonctionne très bien, exiftool récupère les données dans le dossiers de photos $FolderPath et les renvoie dans $TempFile.
Les options -q -q font qu'exiftool n'émet aucun message de compte rendu.
Je voudrais bien enlever ces options pour lire les compte rendus sur la console, ou les renvoyer dans un fichier log.
Malgré tous mes essais, ces compte rendus sont captés par le shell qui tente de les "exécuter" et fait des erreurs.
Ou bien, ils sont mêlés à la sortie standard et renvoyés dans le fichier $TempFile qui n'est pas là pour ça.

Voici mes essais infructueux : (je renonce à utiliser  les balises code, ca fait 15 fois que je refais ce message.)

& $ExifToolName -m -F -r -ext jpg -p $ExifToolArgs "$FolderPath" 1>> $TempFile 2>$Host | ForEach-Object {Write-Host $_ -ForegroundColor Yellow }

& $ExifToolName -m -F -r -ext jpg -p $ExifToolArgs "$FolderPath" 1>> $TempFile | Out-Host
& $ExifToolName -m -F -r -ext jpg -p $ExifToolArgs "$FolderPath" 1>> $TempFile 2>&1 | ForEach-Object { [Console]::WriteLine($_) }

& $ExifToolName -m -F -r -ext jpg -p $ExifToolArgs "$FolderPath" 1>> $TempFile | ForEach-Object { Write-Host "`"$_`"" }

& $ExifToolName -m -F -r -ext jpg -p $ExifToolArgs "$FolderPath" 1>> $TempFile 2>> $BaseFolder\out2.txt

powershell interprète les compte rendus d'exiftool comme des messages d'erreur . Avec $ErrorActionPreference = "SilentlyContinue" , aucun message exiftool n'apparait ...
Dernière édition: il y a 1 mois 1 semaine par Arnaud Petitjean. Raison: balises codes ingérables

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

Plus d'informations
il y a 1 mois 31 minutes #34624 par Francois Dunoyer
ce serait dans le style plus simple

# version sans erreur
dir d:\ 1>> d:\res.txt 2>d:\erreur.log

# version qui alimente le fichier d'erreur
dir e:\existepas 1>> d:\res.txt 2>d:\erreur.log


apres le probleme est plus dans les resulat de l'exiftools que dans le powershell
qu'essayes tu de faire avec cette commande ?

Pour rappel
">" créé le fichier a chaque exécution
">>" ajoute a la fin du fichier existant

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

Plus d'informations
il y a 4 semaines 2 jours - il y a 4 semaines 2 jours #34627 par Michel380
Merci pour cette réponse précise.
J'avais fait diverses erreurs, au cours de mes multiples essais. (Je n'ai pratiquement aucune compétence en shell) .

Il semble important de respecter les espaces dans
dir d:\ 1>> d:\res.txt 2>> null

Ca fonctionne très bien avec null, j'utilise ensuite ces deux lignes
Write-host -NoNewLine "$error "
$error.clear()
Ca répond bien a mes attentes.

pour info :
Avec powershell, j'ai des boucles qui parcourent mes dossiers de photos
Exiftool extrait des métadonnées IPTC et XMP des photos, données qui vont dans le fichier $TempFile
Je mets en forme ces données avec un traitement powershell.
Quand exiftool a fini un traitement d'un dossier, il envoie un compte-rendu du type. "25 images read , 2 directories scanned" vers la console. Je surveille de cette façon le cours du traitement, et parfois d'autres messages sont informatifs.("incorrect header dscn0001.jpg" ou autres ...)
Il semble que ce compte rendu soit détecté comme un message d'erreur par le shell
Le but final est de générer des fichiers "descript.ion" qui seront exploités par XnViewMP.
Je documenterai ça un jour dans mon site ... orchisere.fr/logiciels/thumb.html

J'ai fait des essais avec un fichier log à la place de null, mais je dois être maladroit, j'ai eu des erreurs dedans, je vous dirai si j'y retravaille...
Edit : dans le fichier log, qu"il soit entre guillemets ou non, je trouve des erreurs qui montrent que powershell a mal réagi au messages d'exiftool..
Du coup j'ai mis :
        Write-Host -NoNewline "$error "
        Add-Content -Path $BaseFolder\$LogFile -Value "$error"
        $Error.Clear()
Ca me suffit
Encore merci.
 
Dernière édition: il y a 4 semaines 2 jours par Michel380. Raison: complément

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

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