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

Contenu supprimé Contenu ajouté
typographie française
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’exécution des commandes suivantes :
@TYPE fichier1.txt
@TYPE fichier2.txt
Ligne 102 :
==== Exemple sur un ensemble de fichiers utilisant des caractères génériques ====
FOR /R %%i IN (Doc*) do ECHO "%%i"
équivalent possible à l'exécution des commandes suivantes :
ECHO "C:\document.txt"
ECHO "C:\doc.odf"
Ligne 118 :
Pour un découpage poussé, il faut indiquer le ou les caractères qui délimitent les zones. Par exemple, pour les mots, ce seront les caractères espace, mais on peut également découper selon plusieurs caractères différents.
"delims=''ensemble de caractères''"
Pour les mots séparés par des espaces, il suffira d'ajouter l'option :
"delims= "
Par défaut, les caractères espace et tabulation servent de séparateur.
Ligne 125 :
Pour découper et ne pas prendre en compte tout ce qui se situe à droite d'un caractère, il existe l'option suivante (''end of line'') :
"eol=''caractère''"
Par exemple, si le caractère <tt>#</tt> est un caractère de début de commentaire, et si l'on ne veut pas lire les commentaires, il suffit d'ajouter l'option :
"eol=#"
 
Ligne 131 :
Certains fichiers peuvent contenir des entêtes inexploitables. Il est possible de les supprimer en indiquant le nombre de lignes à exclure lors de la lecture ligne par ligne du fichier. Cette option est globale au fichier, ce n'est pas un traitement de ligne.
"skip=''nombre de lignes''"
Par exemple, pour exclure systématiquement les quatre premières lignes des fichiers, il suffit d'ajouter :
"skip=4"
 
==== Découpe dans les variables ====
La commande FOR ne prend qu'un seul nom de variable. Or, pour chaque ligne, il est possible de faire un découpage, mais un système est mis en place pour permettre de remplir plusieurs variables. Pour l'utiliser, il faut remplir l'option suivante :
"tokens=''chiffres séparés par virgules''''[''*'']''"
Par exemple, pour un découpage par mots, pour traiter, le premier et le deuxième mots, il faudra utiliser l'option :
"tokens=1,2"
Pour récupérer le reste de la ligne (sans séparer les mots), il suffit d'ajouter le caractère: <tt>*</tt> :
"tokens=1,2*"
Dans la commande, pour utiliser ces différentes zones, il faut utiliser le nom de la variable avec un seul caractère, et de nouvelles variables seront automatiquement créées avec les zones suivantes en incrémentant alphabétiquement le nom de la précédente. Par exemple, si la commande FOR est déclarée avec la variable %%i, la première zone sera mémorisée dans %%i, la deuxième dans %%j, la troisième dans %%k (et ainsi de suite si d'autres zones sont définies). Utiliser la commande FOR en passant le nom de variable %%a permet d'avoir une marge généralement suffisante (26 caractères).
 
=== Exemple 1 ===
Soit un fichier ''monFich.txt'' contient les deux lignes suivantes :
sfqsdf1, zarzera2, xvwcvw3, vcnvbn4, rtyutr5, fdgh6
ssfgqsfdf1, zaerera2, zrezw3, veeenvbn4 ; ppppppp
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 exclue. Les lignes contenant un caractère <tt>;</tt> ne seront lues que partiellement : du début jusqu'à ce caractère exclu. Chaque ligne sera découpée en zones selon les caractères virgule (<tt>,</tt>) et espace. La zone 2 sera mémorisée dans %%a, la zone 3 dans %%b, et toutes les zones suivantes dans %%c
Ligne 192 :
 
=== 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’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’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.