[Batch], FOR ???
Résolu/Fermé
A voir également:
- [Batch], FOR ???
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Fichier batch - Guide
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Idm for mac - Télécharger - Téléchargement & Transfert
- Download instagram for pc - Télécharger - Divers Communication
6 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
26 nov. 2008 à 01:06
26 nov. 2008 à 01:06
Bonsoir,
En ce qui concerne le premier problème essaie en mettant entre double quotes ta variable VAR :
for %%A in ("%VAR%"\*.bat "%VAR%"\*.zip) do echo %%A
En ce qui concerne le premier problème essaie en mettant entre double quotes ta variable VAR :
for %%A in ("%VAR%"\*.bat "%VAR%"\*.zip) do echo %%A
Utilisateur anonyme
26 nov. 2008 à 16:37
26 nov. 2008 à 16:37
Merci beaucoup Cchristian, sa marche !!!
Quelqu'un connait un bon tuto sur la commande FOR accompagnée de TOKENS et DELIMS ou bien m'expliquer car je ne comprend pas beaucoup... J'en ai déjà lut des dizaines mais je suis toujours aussi en retard...
Merci d'avance
@+
Quelqu'un connait un bon tuto sur la commande FOR accompagnée de TOKENS et DELIMS ou bien m'expliquer car je ne comprend pas beaucoup... J'en ai déjà lut des dizaines mais je suis toujours aussi en retard...
Merci d'avance
@+
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
26 nov. 2008 à 18:37
26 nov. 2008 à 18:37
Utilisateur anonyme
26 nov. 2008 à 19:52
26 nov. 2008 à 19:52
Ok, merci Cchristian
@+
@+
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
26 nov. 2008 à 22:44
26 nov. 2008 à 22:44
Bonsoir H4RDW4RE,
Je vais essayer de trouver du temps pour te faire un topo sur la boucle FOR, ça ne pourra se faire dans le meilleur des cas que demain, en effet, en ce moment je rencontre quelques problèmes qui mobiisent tout mon temps libre.
Je vais essayer de trouver du temps pour te faire un topo sur la boucle FOR, ça ne pourra se faire dans le meilleur des cas que demain, en effet, en ce moment je rencontre quelques problèmes qui mobiisent tout mon temps libre.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
27 nov. 2008 à 01:40
27 nov. 2008 à 01:40
Bonsoir,
Allez, j'ai un peu de courage, allons-y !
-----------------------------------------------------------------------
A titre d'illustration, voici une serie de 3 boucles FOR dont 2 imbriquées :
ex du contenu du fichier %nomF_CH :
token : Détermine le nombre de parties de la ligne ; c’est-à-dire 1 à n groupes au maximum de caractères contigus, groupes séparés (et donc identifiés) par un ou plusieurs délimiteurs pris par défaut (espace et tabulation si delims= n'est pas codé ) ou définis dans le paramètre delims=dd.
Le premier ou le seul groupe de caractères sélectionné se trouve dans la variable explicitement définie (ici %%J).
Au-delà de 1 groupe (token=1,2 par exemple) une ou plusieurs variables supplémentaires sont automatiquement générées. Le nom de chaque variable supplémentaire est constitué de la lettre, ( précédée de 2 signes "%"), qui, dans l’alphabet, suit immédiatement la lettre attribuée à la dénomination de la variable précédente, ou de la variable explicitement définie, ici %%J (ex; %%J, %%K, %%L,......). Chacune d'elle(s) est renseignée, le cas échéans, avec le groupe correspondant. (avec token=1,2 il y a 2 variables possibles %%J et %%K).EX:
La commande ECHO %%J %%K affiche : J: strtol a traiter K: texte présent uniquement dans la variable %%J car aucun délimiteur n'est actif.
Si maintenant je retire delims= ce sont les délimiteurs par défaut qui vont être actifs (dont l'espace) :
Si je souhaite maintenant récupérer le reliquat de la ligne je fait suivre le second paramètre de token= par un astérisque (*) une nouvelle variable est créée (ici %%L) :
Dans l'exemple initial token=1* : Je demande à ce que les groupes de caractères (l'ensemble de la ligne) n'2tant subordonnés à aucun critère de sélection delims= soient contenus dans la variable %%J.
A noter que l'astérisque est ici inopérante, token=1 est suffisant.
Voilà nécessairement résumés par quelques exemples des cas d'utilisation des paramètres de la boucle FOR, il y a bien entendu d'autres combinaisons possibles, je te laisse les découvrir par l'exemple ..........
Allez, j'ai un peu de courage, allons-y !
-----------------------------------------------------------------------
A titre d'illustration, voici une serie de 3 boucles FOR dont 2 imbriquées :
rem - BOUCLE PRINCIPALE de lectures des chemins d'accès complets. rem - EXTRACTION (chemin accès) du nom et de l'extension du fichier en cours. rem - RECHERCHE dans ce fichier en cours de la présence de une ou plusieurs rem occurrences de chaque MOT/CRITERE présent dans le fichier nomF_CH. FOR /R "%param_1%" %%F IN (*.%ext%) DO ( SET /A "nb_fichiers_accedes+=1" SET /A "cpt_mots_trouves=0" SET "nom_ext=%%~nxF" FOR /F "eol={ tokens=1* delims=" %%J IN (%nomF_CH%) DO ( FOR /F "tokens=1* delims=" %%K IN ( ' TYPE "%%F" ^| FIND /I "%%J" ' ) DO ( SET /A "cpt_mots_trouves+=1" SET "nom_lib_rech=%%J" CALL :CRE_FICH_MATCH CALL :ECRITURE_MATCH "%%F" !nom_ext! ) ) )
TOKEN (help for sous l'invite de commande) 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. EX: FOR /F "eol={ tokens=1* delims=" %%J IN (%nomF_CH%) DO (..eol={ : Je demande à ce que les lignes présentes dans le fichier %nomF_CH% et commençant par un "{" soient ignorées par le traitement de cette boucle for.
ex du contenu du fichier %nomF_CH :
{palindrome {............... {malloc strtolseule la ligne contenant la chaine de caractères "strtol" est traitée dans le corps de la boucle FOR.
token : Détermine le nombre de parties de la ligne ; c’est-à-dire 1 à n groupes au maximum de caractères contigus, groupes séparés (et donc identifiés) par un ou plusieurs délimiteurs pris par défaut (espace et tabulation si delims= n'est pas codé ) ou définis dans le paramètre delims=dd.
Le premier ou le seul groupe de caractères sélectionné se trouve dans la variable explicitement définie (ici %%J).
Au-delà de 1 groupe (token=1,2 par exemple) une ou plusieurs variables supplémentaires sont automatiquement générées. Le nom de chaque variable supplémentaire est constitué de la lettre, ( précédée de 2 signes "%"), qui, dans l’alphabet, suit immédiatement la lettre attribuée à la dénomination de la variable précédente, ou de la variable explicitement définie, ici %%J (ex; %%J, %%K, %%L,......). Chacune d'elle(s) est renseignée, le cas échéans, avec le groupe correspondant. (avec token=1,2 il y a 2 variables possibles %%J et %%K).EX:
FOR /F "eol={ tokens=1,2 delims=" %%J IN (%nomF_CH%) DO (ECHO J: %%J K: %%K) {palindrome {............... {malloc strtol a traiterDans cet exemple, token considère 2 groupes possibles (2 parties de ligne non délimités puisque delims=" rien.
La commande ECHO %%J %%K affiche : J: strtol a traiter K: texte présent uniquement dans la variable %%J car aucun délimiteur n'est actif.
Si maintenant je retire delims= ce sont les délimiteurs par défaut qui vont être actifs (dont l'espace) :
FOR /F "eol={ tokens=1,2" %%J IN (%nomF_CH%) DO ( ECHO J: %%J K: %%K)On obtient J: strtol K: a
Si je souhaite maintenant récupérer le reliquat de la ligne je fait suivre le second paramètre de token= par un astérisque (*) une nouvelle variable est créée (ici %%L) :
FOR /F "eol={ tokens=1,2*" %%J IN (%nomF_CH%) DO ( ECHO J: %%J K: %%K L: %%L)On obtient J: strtol K: a L: traiter
Dans l'exemple initial token=1* : Je demande à ce que les groupes de caractères (l'ensemble de la ligne) n'2tant subordonnés à aucun critère de sélection delims= soient contenus dans la variable %%J.
A noter que l'astérisque est ici inopérante, token=1 est suffisant.
Voilà nécessairement résumés par quelques exemples des cas d'utilisation des paramètres de la boucle FOR, il y a bien entendu d'autres combinaisons possibles, je te laisse les découvrir par l'exemple ..........
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
27 nov. 2008 à 19:37
27 nov. 2008 à 19:37
Ouaaaaa
Merci beaucoup Cchristian !!!
C'est très gentil a toi^^
Encore merci
@+
Merci beaucoup Cchristian !!!
C'est très gentil a toi^^
Encore merci
@+
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
27 nov. 2008 à 20:03
27 nov. 2008 à 20:03
Bonsoir,
Bon courage pour la suite, si tu as des questions n'hésite pas.
Bon courage pour la suite, si tu as des questions n'hésite pas.
ryaxx
>
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
13 mai 2009 à 10:57
13 mai 2009 à 10:57
nickel merci !!!!
Par contre j'ai une petite question, j'aimerais effectuer un calcul de colonne d'un fichier plat
exemple dans mon fichier j'ai :
56 45 75
34 63 67
23 43 98
donc avec ma boucle for j'ai
FOR /f "tokens=2 delims= " %%A in (fichie.txt) do echo %%A
j'obtient bien (les valeurs de la variable %%A)
45
63
43
sauf que j'aimerais faire l'addition de cette colonne si x chiffre afin de trouver le résultat
comment je p donc procédé ?, y a t'il moyen de l'intégré directement dans la boucle for ?
je dois avouer que c'est super intérrésant
Par contre j'ai une petite question, j'aimerais effectuer un calcul de colonne d'un fichier plat
exemple dans mon fichier j'ai :
56 45 75
34 63 67
23 43 98
donc avec ma boucle for j'ai
FOR /f "tokens=2 delims= " %%A in (fichie.txt) do echo %%A
j'obtient bien (les valeurs de la variable %%A)
45
63
43
sauf que j'aimerais faire l'addition de cette colonne si x chiffre afin de trouver le résultat
comment je p donc procédé ?, y a t'il moyen de l'intégré directement dans la boucle for ?
je dois avouer que c'est super intérrésant
cs-bilou
Messages postés
769
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
24 février 2011
164
13 mai 2009 à 16:48
13 mai 2009 à 16:48
Tien un petit truc que j'avais fait pour moi.
Si sa peut t'aider.
Bilou
Si sa peut t'aider.
Delims=. est le séparateur des champs. Donc les partie seront avant et après le ou les point. token=2 on affiche que la deuxième partie étant "admin" et "user" la premier étant "1" et "2" Exemple 1: for /F "tokens=2 delims=." %%i in ('type text.txt') do echo %%i text.txt: Séparateur | | v 1.admin 2.user1 A A | | | | | Deuxieme partie | | | Premier partie Vu que le séparateur (delims=.) est un point. Si tokens=1 Sa n'affichera juste la premier partie donc "1" et "2". Si tokens=2 sa n'affichera juste la deuxieme donc "admin" et "user1"..
Bilou
je vais tester ça de suite
sinon sur un autre forum j'ai trouver une autre solution qui fonctionne nickel (je vous fait tourné l'info)
SETLOCAL ENABLEDELAYEDEXPANSION
SET Total=0
for /f "tokens=10 delims= " %%a in (test.txt) do (set /a Total=!Total!+%%a)
echo Total : !Total!
pause
et ça le fait bien
Merci bilou
sinon sur un autre forum j'ai trouver une autre solution qui fonctionne nickel (je vous fait tourné l'info)
SETLOCAL ENABLEDELAYEDEXPANSION
SET Total=0
for /f "tokens=10 delims= " %%a in (test.txt) do (set /a Total=!Total!+%%a)
echo Total : !Total!
pause
et ça le fait bien
Merci bilou