i

commande FOR



source : https://www.colorconsole.de/console/fr/032.htm


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.


Si les extensions de commandes sont activées, les formes supplémentaires

suivantes sont prises en charge pour la commande FOR :


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


   Si ensemble contient des caractères génériques, alors la correspondance se

   fait sur les noms de répertoires au lieu des noms de fichiers.


FOR /R [[lecteur:]chemin] %variable IN (ensemble) DO commande [paramètres]


   Parcourt l'arborescence de répertoires depuis la racine [lecteur:]chemin,

   en exécutant FOR dans chaque répertoire de l'arborescence. Si aucun

   répertoire n'est spécifié après /R alors le répertoire en cours est

   utilisé. Si ensemble est seulement un point (.) alors seule l'arborescence

   de répertoires sera énumérée.


FOR /L %variable IN (début,pas,fin) DO commande [paramètres]


   L'ensemble est une séquence de chiffres allant de début à fin, incrémenté

   de pas. Ainsi (1,1,5) génère la séquence 1 2 3 4 5 et (5,-1,1) génère la

   séquence (5 4 3 2 1)


FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramètres]

FOR /F ["options"] %variable IN ("chaîne") DO commande [paramètres]

FOR /F ["options"] %variable IN ('commande') DO commande [paramètres]


   ou, si l'options usebackq est utilisée :


FOR /F ["options"] %variable IN (ensemble-fichiers) DO commande [paramètres]

FOR /F ["options"] %variable IN ('chaîne') DO commande [paramètres]

FOR /F ["options"] %variable IN (`commande`) DO commande [paramètres]


   ensemble-fichiers est un ou plusieurs noms de fichiers. Chaque fichier est

   ouvert, lu et traité avant de passer au fichier suivant de

   ensemble-fichiers. Le traitement consiste à lire dans le fichier, le

   découper en lignes individuelles de texte puis analyser chaque ligne en

   zéro ou plusieurs parties. Le corps de la boucle FOR est ensuite appelé

   avec la ou les valeurs de variables prenant la valeur de la ou des parties

   trouvées. Par défaut, /F transmet la première partie séparée par un blanc

   dans chaque ligne de chaque fichier. Les lignes vides sont ignorées. Vous

   pouvez outrepasser le comportement d'analyse par défaut en spécifiant le

   paramètre optionnel "options". Ceci est une chaîne entre guillemets

   contenant un ou plusieurs mots-clés spécifiant diverses options d'analyse.

   Les mots-clés sont :


       eol=c           - spécifie un caractère de commentaire de fin de ligne

                         (un seul)

       skip=n          - spécifie le nombre de lignes à ignorer en début

                         de fichier.

       delims=xxx      - spécifie un ensemble de délimiteurs. Ceci remplace

                         l'ensemble de délimiteurs par défaut qui sont

                         l'espace et la tabulation.

       tokens=x,y,m-n  - spécifie les parties de chaque ligne devant être

                         transmises au corps de FOR à chaque itération.

                         Ceci provoquera l'allocation de noms de variables

                         supplémentaires. La forme m-n est une étendue

                         spécifiant les parties allant de m à n. Si le

                         dernier caractère de la chaîne tokens= est une

                         astérisque, alors une variable supplémentaire est

                         allouée et reçoit le texte restant dans la ligne

                         suivant la dernière partie analysée.

       usebackq        - spécifie que la nouvelle sémantique est en place,

                         lorsqu'une chaîne entre guillemets inversés est

                         exécutée en tant que commande et une chaîne entre

                         guillemets simples est une chaîne de commande

                         littérale et permet l'utilisation de guillemets

                         doubles pour citer des noms de fichiers.


   Quelques exemples explicatifs :


FOR /F "eol=; tokens=2,3* delims=, " %i in (monfich.txt) do @echo %i %j %k


   analyse chaque ligne de monfich.txt, en ignorant les lignes commençant

   par un point-virgule, en transmettant les 2nde et 3ème parties de

   chaque ligne au corps de FOR, les parties étant délimitées par des

   virgules et/ou espaces. Notez que le corps de FOR référence %i pour

   l'obtention de la 2nde partie, %j pour l'obtention de la 3ème partie

   et %k pour l'obtention des parties restantes après la 3ème. Pour les

   noms de fichiers contenant des espaces, placez les noms de fichiers

   entre guillemets doubles. Afin d'utiliser ainsi les guillemets doubles,

   vous devez également utiliser l'option usebackq, faute de quoi les

   guillemets doubles seraient interprétés comme définissant une chaîne

   littérale à analyser.


   %i est déclarée explicitement dans la déclaration FOR et %j et %k

   sont déclarées implicitement via l'option tokens=. Vous pouvez spécifier

   jusqu'à 26 paries via la ligne tokens=, tant que cela ne provoque pas

   de tentative de déclaration de variable plus élevée que la lettre 'z'

   ou 'Z'. Souvenez-vous que les variables de FOR se composent de lettres,

   tiennent compte de la casse, sont globales et que  plus de 52 ne peuvent

   pas être actives à la fois.


   Vous pouvez aussi utiliser la logique d'analyse FOR /F sur une chaîne en

   plaçant ensemble-fichiers entre guillemets entre les parenthèses,

   en utilisant des guillemets simples. Elle sera traitée comme une ligne

   d'entrée simple provenant d'un fichier puis analysée.


   Enfin, vous pouvez utiliser la commande FOR /F pour analyser les

   données en sortie d'une commande. Faites ceci en plaçant des guillemets

   inversés autour de ensemble-fichiers entre les parenthèses.  Elle sera

   traitée comme une ligne de commande transmise à un CMD.EXE enfant et

   la sortie est gardée en mémoire et analysée comme s'il s'agissait d'un

   fichier. Ainsi l'exemple suivant :


     FOR /F "usebackq delims==" %i IN (`ensemble`) DO @echo %i


   énumérerait les noms de variables d'environnement de l'environnement

   en cours.


De plus, la substitution de références de variables FOR a été améliorée.

Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :


   %~I         - étend %I en supprimant les guillemets (")

   %~fI        - étend %I en nom de chemin d'accès reconnu

   %~dI        - étend %I en lettre de lecteur uniquement

   %~pI        - étend %I en chemin d'accès uniquement

   %~nI        - étend %I en nom de fichier uniquement

   %~xI        - étend %I en extension de fichier uniquement

   %~sI        - chemin étendu contenant uniquement des noms courts

   %~aI        - étend %I en attributs du fichier

   %~tI        - étend %I en date/heure du fichier

   %~zI        - étend %I en taille du fichier

   %~$PATH:I   - parcourt les répertoires de la variable

                  d'environnement PATH et étend %I en nom du

                  premier fichier reconnu trouvé. Si le nom de la

                  variable d'environnement n'est pas défini ou

                  que le fichier n'est pas trouvé par la recherche,

                  alors ce modificateur étend en chaîne vide


Vous pouvez combiner les modificateurs pour obtenir des résultats composés :


   %~dpI       - étend %I en lettre de lecteur et chemin d'accès uniquement

   %~nxI       - étend %I en nom de fichier et extension uniquement

   %~fsI       - étend %I en nom de chemin complet avec noms courts

                  uniquement

   %~dp$PATH:i - parcourt les répertoires listés dans la variable

                  d'environnement PATH à la recherche de %I et étend

                  en lettre de lecteur du premier trouvé.

   %~ftzaI     - étend %I en DIR comme ligne en sortie


Dans les exemples ci-dessus %I et PATH peuvent être remplacés par d'autres

valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide.

Le choix de noms de variables en majuscules comme %I facilite la lecture

et empêche toute confusion avec les modificateurs qui ne tiennent pas compte

de la casse.




Les Variables


https://fr.wikibooks.org/wiki/DOS/For


For - Looping commands | SS64.com


Que peut faire la commande FOR?