[Batch] Vérifier présence caractères dans variable

Résolu
Ekiam Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis confronté à un problème car je souhaiterais réussir à ajouter une option telle que lorsqu'une certaine chaîne de caractère est rentré alors aller à un label. C'est assez compliqué à expliquer mais voilà le principe.
En fait, si la personne mets dans la variable choix: 1 /random alors après avoir effectuer ce qui se trouve dans le label 1, aller au label Random et effectuer les actions. Or, je n'arrive pas à faire cela.
On aurait donc: %choix%=1 /random

@echo off

chcp 28591 > nul

:menu
cls

set /p choix="Quelque chose à  dire ? "

if %choix%==0 goto :0
if %choix%==1 goto :1
if %choix%==end goto :end

goto :menu

:0
echo Tu as dit 0
pause > nul
goto :end

:1
echo Tu as dit 1
pause > nul
goto :end

:Random
cls
echo %RANDOM%
pause

:end
echo C'est la fin
pause
exit

1 réponse

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonsoir,

    C'est très simple, il n'y a pas que le IF qui permet de faire une condition, il y a également && et || :

    @echo off

    chcp 28591 > nul

    :menu
    cls

    set /p choix="Quelque chose à dire ? "

    echo %choix% | find "0" && goto :0
    echo %choix% | find "1" && goto :1
    if %choix%==end goto :end

    goto :menu

    :0
    echo Tu as dit 0
    echo %choix% | find "random" && goto :Random
    pause > nul
    goto :end

    :1
    echo Tu as dit 1
    echo %choix% | find "random" && goto :Random
    pause > nul
    goto :end

    :Random
    cls
    echo %RANDOM%
    pause

    :end
    echo C'est la fin
    pause
    exit

    1
    1. Ekiam Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonsoir,

      Je vous remercie, c'est exactement ce que je recherchais mais c'est étrange, je ne l'ai trouvé nulle part.

      J'aimerais juste savoir s'il était possible que cela ne me renvoie pas ce qui se trouve dans la variable.
      (J'aimerais simplement que ça vérifie que dans la variable il y a random mais sans m'écrire dans la console ce que contient la variable %choix%)

      J'espère avoir été assez claire.
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Ekiam Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
         
        C'est possible en redirigeant la sortie vers nul, comme ceci :

        @echo off

        chcp 28591 > nul

        :menu
        cls

        set /p choix="Quelque chose à dire ? "

        echo %choix% | find "0" >nul && goto :0
        echo %choix% | find "1" >nul && goto :1
        if %choix%==end goto :end

        goto :menu

        :0
        echo Tu as dit 0
        echo %choix% | find "random" >nul && goto :Random
        pause > nul
        goto :end

        :1
        echo Tu as dit 1
        echo %choix% | find "random" >nul && goto :Random
        pause > nul
        goto :end


        :Random
        cls
        echo %RANDOM%
        pause

        :end
        echo C'est la fin
        pause
        exit
        0
    2. Ekiam Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonsoir,

      Merci beaucoup, c'est exactement ce que je souhaitais !

      Bonne soirée !
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Ekiam Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci bonne soirée également.
        0