La ligne de commande Windows et les fichiers batch


précédentsommairesuivant

XXVI. Des fichiers batch plus puissants : Partie 2 - Itérations avec "For"

Ce chapitre est une traduction de la page http://commandwindows.com/batchfiles-iterating.htm dont l'auteur original est Victor Laurie.

Je vais décrire ici la puissante instruction "for...in...do".

Les ordinateurs sont très forts pour répéter la même opération encore et encore... La ligne de commande contient une méthode puissante et polyvalente pour effectuer ce type d'opérations. Avec cette méthode, vous pouvez automatiser de nombreuses tâches consommatrices de temps. L'instruction de base est de la forme :

 
Sélectionnez

for
  {chaque élément}
in
  {un ensemble d'éléments}
do
  {commande}

Une variable d'une seule lettre est utilisée pour représenter chaque élément lorsque la commande parcourt l'ensemble. Notez que, contrairement à la plupart des autres commandes Windows, les variables sont sensibles à la casse. Ainsi, "a" et "A" sont deux variables différentes. La variable n'a aucune signification à l'extérieur de l'instruction "For". Je vais utiliser la variable X dans la suite de ce chapitre mais vous pouvez utiliser n'importe quelle autre lettre. (En principe, certains caractères non-alphanumériques peuvent aussi être utilisés, mais il me semble que c'est une mauvaise idée). La variable d'une lettre est précédée par un symbole % lorsqu'elle est utilisée en ligne de commande et doit être précédée de deux caractères % si elle est utilisée dans un fichier batch. Ainsi, l'instruction dans un fichier batch ressemblera à ceci :

 
Sélectionnez

for %%X in (ensemble) do (commande)

Ce qui fait de "For" une commande puissante est la variété d'objets qui peuvent être utilisés comme "ensemble" à parcourir, la disponibilité des caractères jokers et la possibilité de parcourir des fichiers et les sorties de commandes. Un certain nombre de commutateurs sont disponible pour aider à définir le type d'éléments dans l'ensemble à parcourir. Le tableau I liste ces commutateurs. Ils sont listés en majuscules pour plus de clarté mais la casse n'est pas importante.

Tableau I. Commutateurs utilisé avec FOR

Commutateur Fonction
/D Indique que l'ensemble contient des répertoires.
/R La commande est exécutée récursivement dans les sous-répertoires du répertoire parent indiqué.
/L Boucle sur une commande en utilisant des paramètres de début, de fin et de pas indiqués dans l'ensemble.
/F Parcours des fichiers ou une sortie de commande de plusieurs manières.

Je vais donner quelques exemples pour illustrer l'utilisation de "For" et de ses commutateurs.

XXVI-A. Itération simple dans une liste

L'ensemble d'éléments parcourus peut être listé explicitement. Par exemple, l'ensemble pourrait être une liste de fichiers :

 
Sélectionnez

for %%X in (fichier1 fichier2 fichier3) do commande

(Vous devez faire attention à utiliser les bons chemins quand vous effectuez des opérations de fichiers). Un autre exemple où les éléments sont des chaînes de caractères :

 
Sélectionnez

for %%X in (eenie meenie miney moe) do (echo %%X)

Vous pouvez aussi utiliser les jokers pour désigner un jeu de fichiers. Par exemple :

 
Sélectionnez

for %%X in (*.jpg) do commande

Cette syntaxe va exécuter "commande" sur tous les fichiers "jpg" du répertoire courant. Ce processus peut être enrichi en utilisant plusieurs membres dans l'ensemble. Par exemple pour exécuter une commande sur plus d'un type de fichiers, utilisez :

 
Sélectionnez

for %%X in (*.jpg *.gif *.png *.bmp) do commande

Comme toujours, gardez à l'esprit que la ligne de commande n'aime pas les noms de fichiers avec des espaces à moins que le nom soit correctement entouré de guillemets. Par conséquent, vous voudrez peut-être utiliser "%% X" pour la "commande".

XXVI-B. Boucler sur une série de valeurs

L'action bien connue de parcourir une série de valeur qui a été décrite dans le cadre des instructions "if" et "goto" , se fait rapidement avec le commutateur /l (Ce commutateur est la lettre "L", et non pas un «un»). L'instruction est de la forme :

 
Sélectionnez

for /l %%X in (début, pas, fin) do commande

. L'ensemble consiste en entiers définissant la valeur initiale de X, la valeur d'incrément (ou décrément) de X, et la valeur finale de X quand le processus se terminera. Sur la page précédente, j'ai donné un exemple de fichier batch qui listait tous les nombres de 1 à 99. Si nous utilisons une instruction "For", cette tâche peut être accomplie avec une ligne :

 
Sélectionnez

for /l %%X in (1,1,99) do (echo %%X >> E:\nombres.txt)

. Les nombres dans l'ensemble signifient que la valeur initiale de X est 1, que la variable X est incrémentée de 1 à chaque itération et que la valeur finale de X est 99.

XXVI-C. Utiliser les répertoires

Si vous souhaitez utiliser les répertoires dans la variable set, utilisez le commutateur /d. La syntaxe de la commande est la suivante :

 
Sélectionnez

for /d %%X in (ensembleDeRepertoires) do commande

. Voici un exemple qui affiche tous les répertoires (mais pas les sous-répertoires) présents sur le disque "C:" :

 
Sélectionnez

for /d %%X in (C:\*) do echo %%X

XXVI-D. Parcourir récursivement les sous-répertoires

Si vous voulez appliquer une commande au répertoire parent ainsi qu'à ses sous-répertoires, utilisez le commutateur /r. La commande est alors de la forme :

 
Sélectionnez

for /r [repertoireParent] %%X in (ensemble) do commande

Cela permet souvent d'éviter le pénible problème de savoir quel est le répertoire de travail pour la commande shell. Par exemple, l'instruction :

 
Sélectionnez

for /r C:\photos %%X in (*.jpg) do (echo %%X >> E:\listeJPG.txt)

va lister tous les fichiers jpg dans le répertoire c:\photos et ses sous-répertoires. Bien sur, une commande "dir" permet d'obtenir la même chose mais c'est simplement pour illustrer cette commande particulière.

XXVI-E. Parcourir des fichiers, chaînes et sorties de commandes

Nous arrivons maintenant à un commutateur vraiment puissant qui n'avait même pas été imaginé du temps de DOS. Le commutateur /f nous amène dans un territoire avancé, donc je ne peux indiquer que les principaux aspects de ses utilisations. Les choses peuvent être assez complexes donc ceux qui sont intéressés peuvent consulter des livres de programmation ou la documentation Microsoft. Cependant, voici un bref aperçu de ce que l'on peut faire.

Cette version de la commande "for" vous permet d'examiner et de parcourir le texte de fichiers, les chaînes de caractères et les sorties de commandes. La syntaxe est :

 
Sélectionnez

for /f [options] %%X in (source) do commande

Les "options" représentent le critère de recherche dans le texte, et la "source" indique où le texte doit être cherché. L'une des utilisations la plus intéressante est l'analyse de la sortie d'une ou plusieurs commandes et la prise de décision basée sur ce qu'ont renvoyé la ou les commandes.

Pour en savoir plus, vous pouvez consulter l'aide de la commande for en utilisant la commande suivante :

 
Sélectionnez

help for

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright traduction ©2009 Thomas Garcia. Aucune reproduction, même partielle, ne peut être faite de cette traduction et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 Euros de dommages et intérets.
Copyright site web original : Victor Laurie