« DOS/For » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 11 :
FOR %''variable'' IN (''ensemble de fichiers'') DO ''commande''
 
Pour ce cas, le FOR s'utilise sans commutateur. Il est généralement utilisé pour boucler sur un ensemble de noms de fichier, d'autant qu'il est utilisé avec les expressions du type *.''extenstionextension'' ou utilisant les caractères génériques '*' et '?' autrement. Il peut être utilisé avec de simples chaînes de caractères, mais ceci est déconseillé à cause de l'interprétation de certains caractères.
 
=== Exemples ===
==== Exemple sur de simples chaînes ====
FOR %%i IN (chaine1 chaine2) do @ECHO %%i
Cet exemple est équivalent à l'éxécutionl’exécution des commandes suivantes :
@ECHO chaine1
@ECHO chaine2
Ligne 22 :
==== Exemple sur un ensemble de fichiers sans caractère générique ====
FOR %%i IN (fichier1.txt fichier2.txt) do @TYPE %%i
Cet exemple est équivalent à l'éxécutionl’exécution des commandes suivantes:
@TYPE fichier1.txt
@TYPE fichier2.txt
Ligne 28 :
==== Exemple sur un ensemble de fichiers utilisant les caractères génériques ====
FOR %%i IN (*.txt) do @TYPE "%%i"
En supposant que le répertoire courant contienne les fichiers fich1.txt, fich2.txt et fich3.txt, cet exemple est équivalent à l'éxécutionl’exécution des commandes suivantes :
@TYPE "fich1.txt"
@TYPE "fich2.txt"
Ligne 35 :
Variante :
FOR %%i IN (*.txt *.doc install.log) do @TYPE "%%i"
En supposant que le répertoire courant contienne les fichiers fich1.txt, fich2.txt, fich3.txt, readme.doc, lisezmoi.doc, cet exemple est équivalent à l'éxécutionl’exécution des commandes suivantes :
@TYPE "fich1.txt"
@TYPE "fich2.txt"
Ligne 53 :
=== Exemple ===
FOR /L %%i IN (1,2,10) DO @ECHO Message %%i
Ici, la variable %%i commence à 1, augmentera de 2 à chaque boucle. La boucle se terminera lorsque %%i vaudra plus de 10 (c'est-à-dire que %%i = 9 sera la dernière boucle). Cet exemple est donc équivalent à l'éxécutionl’exécution des commandes suivantes :
@ECHO Message 1
@ECHO Message 3
Ligne 83 :
 
== Boucle récursive sur des fichiers ou des répertoires ==
Le principe est le même que les boucles sur des répertoires ou fichiers, mais les recherches se poursuivent dans les sous-répertoires lorqueslorsque l'ensemble contient des caractères génériques.
=== Utilisation ===
L'ajout du commutateur /R permet de faire cette boucle récursive sur les sous-répertoires.
Ligne 149 :
Un commande FOR lisant ce fichier pourrait être:
FOR /F "eol=; tokens=2,3* delims=, " %%a IN (monfich.txt) DO @ECHO %%a %%b %%c
Dans cet exemple, le fichier ''monFich.txt'' va être lu ligne par ligne, aucune ligne de début n'est excluseexclues. Les lignes contenant un caractère <tt>;</tt> ne seront lu que partiellement : du début jusqu'à ce carctèrecaractère exclus. Chaque ligne sera découpée en zones selon les caractères <tt>,</tt> et espaces. La zone 2 sera mémorisée dans %%a, la zone 3 dans %%b, et toutes les zones suivantes dans %%c
L'exécution de cette commande est donc équivalente à :
@ECHO zarzera2 xvwcvw3 vcnvbn4, rtyutr5, fdgh6
@ECHO zaerera2 zrezw3 veeenvbn4
Ligne 193 :
=== Exemple ===
L'exemple suivant permet de rechercher tous les fichiers .txt contenant la chaîne de caractères <tt>toto</tt>. La commande <tt>FIND /C "toto" *.txt</tt> est utilisée pour faire la recherche. Cette commande retourne:
--------- ''nom du fichier lu'': ''nombre d'occurencesd’occurrences trouvées''
Même si la chaîne de caractères n'est pas trouvée, FIND retourne une ligne avec 0 pour le nombre d'occurencesd’occurrences (voir [[DOS/Find]]). L'exemple suivant traite donc, chaque ligne retournée par le FIND afin de récupérer le nom des fichiers trouvés.
@ECHO OFF
Ligne 203 :
)
)
Le nombre d'occurencesd’occurrences est mis dans %%c, c'est pourquoi cet exemple teste si %%c est strictement supérieur à 0 (pour n'afficher que les fichiers trouvés).