Bonjour,
L'un de vous sait-il s'il est possible d'exécuter plusieurs commandes à chaque itération d'une boucle FOR dans un fichier batch (.bat) DOS ? Ceci sans appeler un fichier de commandes externe.
Dans le script qui suit, aucun problème si je remplace GOTO APPENDCOMMANDES par un simple ECHO %%F
qui affiche le nom de fichier contenu dans %%F. Ca se corse avec plusieurs instructions dans une procédure.
Je ne trouve pas le moyen de retourner dans la boucle FOR une fois les instructions de la procédure APPENDCOMMANDES terminées.
En outre, %%F ne renvoie plus le contenu de %%F lorsque dans la procédure, comme si la variable était locale à la boucle FOR.
Merci d'avance à ceux qui n'ont pas peur du DOS !
REM La boucle qui suit permet de lire les différents arguments passés à la suite de l'invocation de ce fichier batch.
REM On lit le 1er paramètre (stocké dans %1) et on exécute les commandes tant que %1 n'est pas vide.
REM Grâce à SHIFT, on décale les paramètres %2, %3, %4, etc. en direction de %1 tant que %1 n'est pas vide.
REM Ceci permet de lire plusieurs noms de fichiers placés dans %1, %2, %3, etc.
REM Grâce à FOR, on peut utiliser des wildcards pour désigner plusieurs fichiers. Par exemple: *.dat passé dans %1.
:LOOP
IF '%1'=='' GOTO FINISH
FOR %%F IN (%1) DO GOTO APPENDCOMMANDES
SHIFT
GOTO LOOP
REM Commandes pour un programme appelé ultérieurement.
:APPENDCOMMANDES
ECHO LOAD %%F >> Unit.cmd
ECHO GDES >> Unit.cmd
ECHO UNIT >> Unit.cmd
ECHO EXEC >> Unit.cmd
ECHO . >> Unit.cmd
SAVE %%F >> Unit.cmd
:FINISH
ECHO QUIT >> Unit.cmd
ECHO Fin du processus batch.

