EXIFTOOL dans un programme PureBasic

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
sospel
Messages : 56
Inscription : ven. 05/déc./2008 21:47

EXIFTOOL dans un programme PureBasic

Message par sospel »

Bonjour à tous et à chacun en particulier :)

Utilisant souvent PUREBASIC pour mes utilitaires informatiques courants, j'ai voulu utiliser EXIFTOOL pour récupérer dans un fichier "DonnExif.txt" toutes les données "exif" d'une photo JPG.

j'ai fait d'abord un essai dans l'invite de commandes sous W10 et ça a fonctionné du premier coup :
Par exemple :

"C:\....\Exif-Tool\exiftool-12.16\exiftool.exe " "G:\DossiersPersos\...\Tempor\pict0001.JPG" > "G:\DossiersPersos\Tempor\DonnExif.txt"

Puis, j'ai voulu faire la même chose pour traiter plusieurs photos, et j'ai donc mis le process "RUNPROGRAM(....)" de PureBasic dans une boucle sur le nombre de photos (1 seule pour commencer !).
Et là, problème : je me mélange les pinceaux dans les "paramètres" : ceux de RUNPROGRAM() lui-même et ceux de EXIFTOOL, pléthoriques .
D'où l'issue fatale : pas de DonnExif.txt :(

Est-ce quelqu'un (@TYPHON ??) pourrait m'indiquer la bonne syntaxe ??

Merci d'avance :)
Cordialement
SosPel
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: EXIFTOOL dans un programme PureBasic

Message par case »

tout d'abord je suppose que le chemin que tu indique dans ta demande est incomplet
"C:\....\Exif-Tool\exiftool-12.16\exiftool.exe"
les '....' doivent etre remplacés par le chemin réel du programme

as tu essayer quelque chose comme ca ?

Code : Tout sélectionner

runprogram("C:\....\Exif-Tool\exiftool-12.16\exiftool.exe",chr(34)+"G:\DossiersPersos\...\Tempor\pict0001.JPG"+chr(34)+" > "+chr(34)+"G:\DossiersPersos\Tempor\DonnExif.txt"+chr(34))
apres il est possible que l'utilisation du > pour ecrire la sortie cli dans un fichier ne fonctionne pas avec runprogram. donc il faudrait regarder la doc de exiftool pour voir si il y a moyen de specifier une sortie dans un fichier.

Code : Tout sélectionner

runprogram("C:\....\Exif-Tool\exiftool-12.16\exiftool.exe",chr(34)+"G:\DossiersPersos\...\Tempor\pict0001.JPG"+chr(34)+" -w %d%f.txt")
ImageImage
Marc56
Messages : 2196
Inscription : sam. 08/févr./2014 15:19

Re: EXIFTOOL dans un programme PureBasic

Message par Marc56 »

Le redirection de sortie fonctionne (la plupart du temps).

Code : Tout sélectionner

RunProgram(GetEnvironmentVariable("ComSpec")    , 
           "/k echo hello World! > "            + 
           GetTemporaryDirectory()              + 
           "hello.txt"                          , 
           ""                                   , 
           #PB_Program_Hide)
C'est le pipe ( | ) qui pose parfois problème.
:wink:
Avatar de l’utilisateur
Naheulf
Messages : 193
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: EXIFTOOL dans un programme PureBasic

Message par Naheulf »

La redirection vers un fichier peut être faite en PureBasic :

Code : Tout sélectionner

ProgramName$ = "C:\....\Exif-Tool\exiftool-12.16\exiftool.exe"
ImageATraiter$ = "G:\DossiersPersos\...\Tempor\pict0001.JPG"

program = RunProgram(ProgramName$, #DQUOTE$+ImageATraiter$+#DQUOTE$, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)
If program
	OpenFile(0, ImageATraiter$+".EXIF")
	While ProgramRunning(program)
		WriteStringN(0, ReadProgramString(program))
	Wend
	CloseFile(0)
	CloseProgram(program)
EndIf
De même que pour le chaînage des programmes :

Code : Tout sélectionner

ProgramName1$ = "emeteur.exe"
ParamsProgram1$ = #Empty$
ProgramName2$ = "recepteur.exe"
ParamsProgram1$ = #Empty$

program1 = RunProgram(ProgramName1$, ParamsProgram1$, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)
If program1
	program2 = RunProgram(ProgramName2$, ParamsProgram2$, "", #PB_Program_Open | #PB_Program_Connect, program1)
	If program2
		WaitProgram(program2)
		CloseProgram(program2)
	EndIf
	CloseProgram(program1)
EndIf
sospel
Messages : 56
Inscription : ven. 05/déc./2008 21:47

Re: EXIFTOOL dans un programme PureBasic

Message par sospel »

Hello :)

Merci à case , Marc56, Naheulf pour vos suggestions !

Rem pour @case : l'écriture "C:\....\Exif-Tool\..." sous-entendait évidemment que les "..." remplacaient le path exact :)

Ceci dit, renseignements pris sur le site ExifTool, la redirection " > " s'écrit " -W+! " . Il suffisait de le savoir

Je vais aussi tester vos solutions, puisqu'applicables directement avec PureBasic !
Encore Merci
Cordialement
SosPel
Répondre