Batch : comparer deux variables

Résolu
Vince -  
brucine Messages postés 21598 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je débute en batch et pour me faire la main, j'ai écrit ça :

@echo off
SET /A cpt = 0
SET /A nb_a_supp=2
setlocal enableextensions enabledelayedexpansion
for %%i in (1,2,3,4,5) do (
    SET /A cpt+=1
    IF %cpt% LEQ %nb_a_supp% echo cpt egale a !cpt! et inferieur a !nb_a_supp!
)
​​​​​​​pause

L'idée est de vérifier si j'ai bien compris les comparaisons mais à priori non :(

Normalement, le script ne devrait m'afficher que 

cpt egale a 1 et inferieur a 2
cpt egale a 2 et inferieur a 2

Or il m'affiche  : 

cpt egale a 1 et inferieur a 2
cpt egale a 2 et inferieur a 2
cpt egale a 3 et inferieur a 2
cpt egale a 4 et inferieur a 2
cpt egale a 5 et inferieur a 2

Une idée ?
D'avance, merci !


Windows / Chrome 117.0.0.0

1 réponse

jee pee Messages postés 41494 Date d'inscription   Statut Modérateur Dernière intervention   9 709
 

Bonjour,

Tu utilises le bon identificateur de variable pour l'echo mais pas pour le test

    IF !cpt! LEQ !nb_a_supp! echo cpt egale a !cpt! et inferieur a !nb_a_supp!

1
brucine Messages postés 21598 Date d'inscription   Statut Membre Dernière intervention   3 394
 

Bonjour,

ne fonctionne de toute façon pas chez moi variables retardées ou pas (il y a un problème de syntaxe empêchant l'exécution).

Les variables retardées, c'est souvent piégeux, alternative via une sous-routine CALL:

 

@echo off
SET cpt=0
SET nb_a_supp=2
for %%i in (1,2,3,4,5) do SET count=%%i & CALL :PROCESS
pause
GOTO EOF

:PROCESS
SET/A cpt1=cpt+count
IF %cpt1% LEQ %nb_a_supp% echo cpt egale a %cpt1% et inferieur ou egal a %nb_a_supp%
exit /b

:EOF
0
jee pee Messages postés 41494 Date d'inscription   Statut Modérateur Dernière intervention   9 709
 

Dans mon environnement cela fonctionne

0
brucine Messages postés 21598 Date d'inscription   Statut Membre Dernière intervention   3 394 > jee pee Messages postés 41494 Date d'inscription   Statut Modérateur Dernière intervention  
 

Recopié textuellement, rien à faire; mais bon, chercher à comprendre, c'est commencer à désobéir...

0
Vince
 

C'est parfait, merci à toi @brucine 

0
brucine Messages postés 21598 Date d'inscription   Statut Membre Dernière intervention   3 394 > Vince
 

Si je veux faire zoli et rajouter les accents qui conviennent:

IF %cpt1% LEQ %nb_a_supp% echo cpt égal à %cpt1% et inférieur ou égal a %nb_a_supp%

mettre en tête de gondole après echo off:

CHCP 65001>NUL

0