Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boucle FOR dans .BAT

7 réponses
Avatar
PYL
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT DOS
mais je bloque ...

help please ;~(

7 réponses

Avatar
Fltr
PYL a ecrit le 29/05/2007 17:13:
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT DOS
mais je bloque ...

help please ;~(


Ci-dessous un .bat qui marche .Attention de mettre les adresses
complètes (répertoires) pour le fichier et le programme
Il peut aussi y avoir des soucis avec les caractères accentués, les noms
très longs etc.
======================== @Echo Off

If %1!==! (
Echo Lit une liste ds un fichier texte, puis lance monprog.exe avec
ce nom de fichier
Echo.
Echo Syntax: %~n0 listfile.txt
Goto :EOF)

If Not Exist %1 (
Echo Fichier non trouve - %1
Goto :EOF)

::Lit la liste, lance monprog.exe
Set /A _ = 0
For /F %%A In ('More /E +%_% %1') Do C:repertoiremonprog.exe %%A
goto :EOF
=======================
A+

Fltr

Avatar
Jean-Claude BELLAMY
"PYL" a écrit dans le message de
news:
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de
fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT
DOS
Voila un mot de TROP !!!

Il n'y a pas un poil de DOS là-dedans !

mais je bloque ...
Et l'aide en ligne, elle est fait pour faire joli ou amuser les mômes ?


commande :
FOR /?

Ce qui donne :
@echo off
...
FOR /F %%A in (filelist.txt) do monprog.exe %%A
...

Vachement compliqué, n'est-il pas ? ;-)



COSAAAAAAAAAAQUE !!!!!!
;-)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org

Avatar
Jean-Claude BELLAMY
"Fltr" a écrit dans le message de
news:465d3174$0$21144$
PYL a ecrit le 29/05/2007 17:13:
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de
fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT
DOS mais je bloque ...

help please ;~(


Ci-dessous un .bat qui marche .Attention de mettre les adresses complètes
(répertoires) pour le fichier et le programme
[...]
Set /A _ = 0
For /F %%A In ('More /E +%_% %1') Do C:repertoiremonprog.exe %%A
goto :EOF



"Pourquoi faire simple quand on peut faire compliqué ?" (principe SHADOK de
base ! )
;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org


Avatar
Fltr
Jean-Claude BELLAMY a ecrit le 30/05/2007 10:16:
"PYL" a écrit dans le message de
news:
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de
fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT
DOS
Voila un mot de TROP !!!

Il n'y a pas un poil de DOS là-dedans !

mais je bloque ...
Et l'aide en ligne, elle est fait pour faire joli ou amuser les mômes ?


commande :
FOR /?

Ce qui donne :
@echo off
...
FOR /F %%A in (filelist.txt) do monprog.exe %%A
...

Vachement compliqué, n'est-il pas ? ;-)



COSAAAAAAAAAAQUE !!!!!!
;-)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org



C'est bien un barbu ce Bellamy,
on se calme !!!


Avatar
PYL
Ah oui alors trop fort !!!
bref, merci mais j'aurai un peu mieux lu et j'aurai vu que %% dans un .bat
c'est mieux que % tout seul...

et maintenant que j'ai bien lu ; si on souhaite faire exécuter monprog.exe
et monprog2.exe dans la boucle FOR est-ce qu'il est encore plus fort pour
trouver ça ?




Jean-Claude BELLAMY a ecrit le 30/05/2007 10:16:
"PYL" a écrit dans le message de
news:
Voila, j'ai un fichier filelist.txt dans lequel j'ai une liste de
fichiers.

Je voudrais faire appliquer un traitement (monprog.exe) à chacun des
fichiers listés dans filelist.txt => monprog.exe fichier1.data puis
fichier2.data ...

Pour cela j'ai imaginé et testé des solutions avec la boucle FOR en .BAT
DOS
Voila un mot de TROP !!!

Il n'y a pas un poil de DOS là-dedans !

mais je bloque ...
Et l'aide en ligne, elle est fait pour faire joli ou amuser les mômes ?


commande :
FOR /?

Ce qui donne :
@echo off
...
FOR /F %%A in (filelist.txt) do monprog.exe %%A
...

Vachement compliqué, n'est-il pas ? ;-)



COSAAAAAAAAAAQUE !!!!!!
;-)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org



C'est bien un barbu ce Bellamy,
on se calme !!!





Avatar
Jean-Claude BELLAMY
"PYL" a écrit dans le message de
news:
Ah oui alors trop fort !!!
bref, merci mais j'aurai un peu mieux lu et j'aurai vu que %% dans un .bat
c'est mieux que % tout seul...


C'est toujours comme çà quand on ne prend pas le temps élémentaire de LIRE
l'aide en ligne !!!
(gratuit !)

------------------ (copier-coller) ------------------
C:>for /?
Exécute une commande donnée pour chaque fichier d'un ensemble de fichiers.

FOR %variable IN (ensemble) DO commande [paramètres]

%variable Spécifie un paramètre remplaçable par une seule lettre.
(ensemble) Ensemble de fichiers. Caractères génériques autorisés.
commande Commande à exécuter pour chaque fichier.
paramètres Liste des paramètres ou des options pour la commande
spécifiée.

Pour utiliser la commande FOR dans un programme de commandes, spécifiez
%%variable au lieu de %variable. Les noms de variables respectent la
casse, donc %i est différent de %I.
[...]
------------------ (copier-coller) ------------------

et maintenant que j'ai bien lu ; si on souhaite faire exécuter monprog.exe
et monprog2.exe dans la boucle FOR est-ce qu'il est encore plus fort pour
trouver ça ?


Fastoche !!!!
Il suffit, au choix :
1) d'encadrer les commandes par des parenthèses
@echo off
...
FOR /F %%A in (filelist.txt) do (
monprog.exe %%A
monprog2.exe .....
monprog3.exe .....
if ....
set ....
call ....
....
)
...

2) utiliser l'opérateur de concaténation de commandes "&"
@echo off
...
FOR /F %%A in (filelist.txt) do monprog.exe %%A & monprog2.exe .....

La syntaxe avec "&" est plus simple et plus "légère", mais se limite à 1 ou
2 commandes, sinon çà devient illisible.
Dans ce cas, il vaut mieux passer aux parenthèses.


Re-vachement compliqué, n'est-il pas ? ;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org

Avatar
PYL
Impec, merci pour tout ;-)


"PYL" a écrit dans le message de
news:
Ah oui alors trop fort !!!
bref, merci mais j'aurai un peu mieux lu et j'aurai vu que %% dans un .bat
c'est mieux que % tout seul...


C'est toujours comme çà quand on ne prend pas le temps élémentaire de LIRE
l'aide en ligne !!!
(gratuit !)

------------------ (copier-coller) ------------------
C:>for /?
Exécute une commande donnée pour chaque fichier d'un ensemble de fichiers.

FOR %variable IN (ensemble) DO commande [paramètres]

%variable Spécifie un paramètre remplaçable par une seule lettre.
(ensemble) Ensemble de fichiers. Caractères génériques autorisés.
commande Commande à exécuter pour chaque fichier.
paramètres Liste des paramètres ou des options pour la commande
spécifiée.

Pour utiliser la commande FOR dans un programme de commandes, spécifiez
%%variable au lieu de %variable. Les noms de variables respectent la
casse, donc %i est différent de %I.
[...]
------------------ (copier-coller) ------------------

et maintenant que j'ai bien lu ; si on souhaite faire exécuter monprog.exe
et monprog2.exe dans la boucle FOR est-ce qu'il est encore plus fort pour
trouver ça ?


Fastoche !!!!
Il suffit, au choix :
1) d'encadrer les commandes par des parenthèses
@echo off
...
FOR /F %%A in (filelist.txt) do (
monprog.exe %%A
monprog2.exe .....
monprog3.exe .....
if ....
set ....
call ....
....
)
...

2) utiliser l'opérateur de concaténation de commandes "&"
@echo off
...
FOR /F %%A in (filelist.txt) do monprog.exe %%A & monprog2.exe .....

La syntaxe avec "&" est plus simple et plus "légère", mais se limite à 1 ou
2 commandes, sinon çà devient illisible.
Dans ce cas, il vaut mieux passer aux parenthèses.


Re-vachement compliqué, n'est-il pas ? ;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org