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
Un bout du second .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 )
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...
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%
Partager