Batch : comparer deux variables

Résolu
Vince -  
brucine Messages postés 24845 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 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979
     

    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 24845 Date d'inscription   Statut Membre Dernière intervention   4 169
       

      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 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979
       

      Dans mon environnement cela fonctionne

      0
      1. brucine Messages postés 24845 Date d'inscription   Statut Membre Dernière intervention   4 169 > jee pee Messages postés 31883 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 24845 Date d'inscription   Statut Membre Dernière intervention   4 169 > 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