Bonjour, voilà mon problème :

J'ai 2 fichiers .bat

Dans le premier, une boucle récupère une liste de fichiers et effectue un CALL du second .bat en donnant quelques infos en paramètres dont le nom du fichier.

Le second .bat utilise ces infos pour faire un traitement.

Le problème est le suivant :

le premier .bat n'attend pas la fin du CALL pour continuer sa boucle FOR. Ainsi, j'ai des problèmes de variables locales au second .bat qui sont remplacées par celles du même .bat mais de l'appel suivant.

Exemple :

call second.bat toto
call second.bat tata

Le temps de traitement de second.bat fait qu'au moment d'utiliser l'information toto (premier appel) bah c'est l'information tata qui est utilisée...

Un bout du premier .bat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
FOR %%F IN (%audio_input_dir%\*.ogg) DO	(
	call SimpleOggToPhoneme %output_dir% %audio_input_dir% %%~nF.ogg %text_input_dir% >NUL
)
Un bout du second .bat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
FOR %%I IN (%audio_input_dir%\%audio_filename%) DO (
	SET ConvertFileName=%%~nI
	SET WavOutput=%ConvertFileName%.wav
	IF [%WavOutput%]==[] GOTO lEof3
	IF [%WavOutput%]==[.wav] GOTO lEof3
	ECHO Working on %ConvertFileName% : %WavOutput%
Vosu remarquerez que WavOutput est initialisé à partir de la variable convertfilename. Pourtant lors de l'echo j'en ai toujours un qui contient la valeur qu'il a dans l'appel qui suit (passage suivant dans le for du premier.bat)... Je suis dessus depuis des heures mais pas moyen de trouver...