Batch : comparer deux variables

Résolu
Vince - 28 sept. 2023 à 09:51
brucine Messages postés 14219 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 avril 2024 - 28 sept. 2023 à 15:40

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 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224
28 sept. 2023 à 10:56

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 14219 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 avril 2024 1 792
28 sept. 2023 à 11:29

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 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024 9 224
28 sept. 2023 à 11:38

Dans mon environnement cela fonctionne

0
brucine Messages postés 14219 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 avril 2024 1 792 > jee pee Messages postés 39582 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 17 avril 2024
28 sept. 2023 à 11:50

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

0

C'est parfait, merci à toi @brucine 

0
brucine Messages postés 14219 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 avril 2024 1 792 > Vince
28 sept. 2023 à 15:40

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