Batch : Probleme avec for /F
Résolu/Fermé
Utilisateur anonyme
-
19 oct. 2010 à 18:37
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 19 oct. 2010 à 23:40
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 19 oct. 2010 à 23:40
5 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
Modifié par cchristian le 19/10/2010 à 20:05
Modifié par cchristian le 19/10/2010 à 20:05
Bonsoir,
Avec une boucle FOR tu explores tous les enregistrements d'un même fichier, sauf ceux bien entendu qui sont sautés (si l'option SKIP n est codée). Pour chaque enregistrement accédé (lu) la séquence d'instructions (qui doit être entre parenthèse si il y a plusieurs instructions) codée après DO est éxécutée.
for /F "tokens=1 skip=%N% delims= " %%a IN (.\listeServeurs.txt) DO set nomChoisi=%%a
for /F "tokens=1 skip=%N% delims= " %%b IN (.\listeRealmlist.txt) DO set realChoisi=%%b
Il n'y a donc rien d'étonnant à ce que tu récupères systématiquement le contenu du dernier enregistrement à l'issue de chacune de tes boucles FOR.
Je vois les choses comme cela:
Il faut donc effectuer un test d'égalité entre N et une variable numérique initialisée avec la valeur de N et dont la valeur change à chaque itération, ceci pour ne localiser que l'enregistrement concerné:
rem pour test set /A N = 2
SET /A CPT_SKIP = N
FOR /F "tokens=1 skip=%N% delims= " %%I IN (.\listeServeurs.txt) DO (
IF !CPT_SKIP! EQU !N! ( set "nomChoisi=%%I" )
SET /A CPT_SKIP += 1 )
idem pour .\listeRealmlist.txt
Cordialement.
Cchristian.
Avec une boucle FOR tu explores tous les enregistrements d'un même fichier, sauf ceux bien entendu qui sont sautés (si l'option SKIP n est codée). Pour chaque enregistrement accédé (lu) la séquence d'instructions (qui doit être entre parenthèse si il y a plusieurs instructions) codée après DO est éxécutée.
for /F "tokens=1 skip=%N% delims= " %%a IN (.\listeServeurs.txt) DO set nomChoisi=%%a
for /F "tokens=1 skip=%N% delims= " %%b IN (.\listeRealmlist.txt) DO set realChoisi=%%b
Il n'y a donc rien d'étonnant à ce que tu récupères systématiquement le contenu du dernier enregistrement à l'issue de chacune de tes boucles FOR.
Je vois les choses comme cela:
Il faut donc effectuer un test d'égalité entre N et une variable numérique initialisée avec la valeur de N et dont la valeur change à chaque itération, ceci pour ne localiser que l'enregistrement concerné:
rem pour test set /A N = 2
SET /A CPT_SKIP = N
FOR /F "tokens=1 skip=%N% delims= " %%I IN (.\listeServeurs.txt) DO (
IF !CPT_SKIP! EQU !N! ( set "nomChoisi=%%I" )
SET /A CPT_SKIP += 1 )
idem pour .\listeRealmlist.txt
Cordialement.
Cchristian.