Batch : comparer deux variables

Résolu
Vince -  
brucine Messages postés 25329 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

  1. jee pee Messages postés 9459 Date d'inscription   Statut Modérateur Dernière intervention   10 013
     

    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
    1. brucine Messages postés 25329 Date d'inscription   Statut Membre Dernière intervention   4 195
       

      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
    2. jee pee Messages postés 9459 Date d'inscription   Statut Modérateur Dernière intervention   10 013
       

      Dans mon environnement cela fonctionne

      0
      1. brucine Messages postés 25329 Date d'inscription   Statut Membre Dernière intervention   4 195 > jee pee Messages postés 9459 Date d'inscription   Statut Modérateur Dernière intervention  
         

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

        0
    3. Vince
       

      C'est parfait, merci à toi @brucine 

      0
      1. brucine Messages postés 25329 Date d'inscription   Statut Membre Dernière intervention   4 195 > 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