[batch] incrémentation

[Fermé]
Signaler
Messages postés
69
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
18 mai 2007
-
 @lex -
Bonjour,

Je n'arrive pas à incrémenter une variable dans un script bash.
Ceci fonctionne
set k=0
set /A k=%k%+1
echo %k%

mais pas ceci
set k=0
For /F %%i in ('dir /A:A /O:S /B') do (
set /A k=%k%+1
)
echo %k%

k vaut toujours 0 !!!
Pourriez-vous me dire comment incrémenter une variable dans une boucle ? Je désespère !
Merci

6 réponses

Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
126
Bonsoir,

Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite quand on boucle ! Le temps passe si vite ..........................

T'en es où Florian depuis le temps ? COSTiC t'a pas réveillé, au moins ?
Autrement c'est un problème d' expansion retardée de variables il suffit de mettre en début de fichier : SETLOCAL ENABLEdelayedExpansionet de remplacer les "%" par des "!" qui encadrent la variable k :
set k=0 
For /F %%i in ('dir /A:A /O:S /B') do ( 
set /A k=!k!+1 
) 
echo !k! 


Pour s'en convaincre faire "help set" sur l'invite de commandes.
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


Tien prend sa! (Ses une petite boucle simple!)

set k=0
:LE_NOM
set /A k=%k%+1
echo %k%
GOTO LE_NOM
Salut tout le monde, je sais que ce sujet est plus que dépassé : 2 ans

Mais les réponses m'ont tellement dépité que je me suis senti obligé de répondre

la séquence est : let "k += 1" on peut difficilement faire plus simple !
bonhjour,
jai EXACTEMENT le meme problème si tu as une solution merci de me prévenir, moi je continue à chercher ;)
a+
Enorme,
Je faisais une petite recherche sur qq commandes, et je tombe sur ça!
J'avoue que j'ai bien ri, et j'aurais aimé savoir si Florian a utilisé la boucle "simple", mais surtout infinie d'Alexandre...
Bon, je suis un peu mauvaise langue, je suis certain que ça partait d'une bonne intention, mais tu aurais pu aller un peu plus loin... Ne sait-on jamais... :)
Hello,

Bien des années plus tard une solution ok :

Cette formule incremente la variable "compt" de 1 à chaque tour et fait la somme des nombres contenu dans "monfichier.txt" dans la variable "tot"

for /f %%i in (monFichier.txt) do (
set /a tot+=%%i
set /a compt+=1
)