[batch] incrémentation

AnaGraM Messages postés 72 Statut Membre -  
 @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

cchristian Messages postés 928 Statut Membre 131
 
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.
6
alexandres32
 
Tien prend sa! (Ses une petite boucle simple!)

set k=0
:LE_NOM
set /A k=%k%+1
echo %k%
GOTO LE_NOM
2
lagavulin
 
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 !
1
Florian
 
bonhjour,
jai EXACTEMENT le meme problème si tu as une solution merci de me prévenir, moi je continue à chercher ;)
a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CoStiC
 
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... :)
0
@lex
 
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
)
0