IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Utiliser findstr dans input, comment faire ?


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 30
    Par défaut Utiliser findstr dans input, comment faire ?
    Bonjour, je bricole un petit chatbot en fichier Batch, je suis sur la bonne piste mais je n'arrive pas à intérger "findstr" pour trouver le mot clef dans l'entrée de l'utilisateur...

    Pour l'instant j'ai mis ça :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    @echo off
    title Test Bot
    COLOR 1a
    cls
     
    :debut
    echo ze test
    Pause >nul
    goto suite
     
    :ionose
    setlocal enabledelayedexpansion
    set string[0]=Pardon?
    set string[1]=Excusez-moi?
    set /a idx=%random% %%2
    echo !string[%idx%]!
     
    :suite
    SET /P Humain=
    set Humain=%Humain:?=%
    call :%Humain: =% 2>NUL
    rem echo %Humain%|findstr /i "coucou" > nul & goto coucou
    rem echo %Humain%|findstr /i "voitur" > nul & goto voiture
    if %errorlevel% equ 0 goto ionose
     
    :coucou
    setlocal enabledelayedexpansion
    set string[0]=coucou 0.
    set string[1]=coucou 1.
    set /a idx=%random% %%2
    echo !string[%idx%]!
    goto suite
     
    :voiture
    setlocal enabledelayedexpansion
    set string[0]=test voiture 0.
    set string[1]=test voiture 1.
    set /a idx=%random% %%2
    echo !string[%idx%]!
    goto suite

    j'ai mis en commentaire les 2 lignes test consacrées à "findstr" car ça ne marche pas trop. Le but est le trouver le mot "coucou" par exemple en pleine chaine de caractères.

    Si l'utilisateur tape "hey man, coucou ! ça roule aujourd'hui?", le mot coucou est trouvé et hop, on est renvoyé vers une instruction plus bas.

    Une idée de comment faire ça?
    Merci de vos conseils, je coince un peu là mdr

    Bon weekend.
    Alain

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Bonjour,

    Pour tester la variable %ERRORLEVEL% tu peux utiliser && ou || ou bien les deux en même temps.
    Un exemple :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    echo %Humain%| findstr /i "coucou" >nul && goto coucou || goto pastrouve

    Traduction : si coucou est trouvé alors aller à l'étiquette "coucou" sinon aller à l'étiquette "pastrouve"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 30
    Par défaut snif
    Merci de ta réponse Barnabe0057, alors voilà ce que j'ai mis, mais ça ne fonctionne pas, quelque soit ce que je tape je suis invariablement orienté vers la balise ":coucou"...

    Cela dit (je ne sais pas si c'est important), mais pendant 15 jours je n'ai pas accès à windows, je suis sous linux mint et donc j'utilise Wine pour faire tourner le fichier BAT. Peut-être que ça fausse les commandes ?...?

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    @echo off
    title Test Bot
    COLOR 1a
    cls
     
    :debut
    echo ze test
    Pause >nul
    goto suite
     
    :pastrouve
    setlocal enabledelayedexpansion
    set string[0]=Pardon?
    set string[1]=Excusez-moi?
    set /a idx=%random% %%2
    echo !string[%idx%]!
     
    :suite
    echo.
    SET /P Humain=
    echo %Humain%| findstr /i "coucou" >nul && goto coucou || goto pastrouve
    rem if %errorlevel% equ 0 goto ionose
     
    :coucou
    setlocal enabledelayedexpansion
    set string[0]=coucou 0.
    set string[1]=coucou 1.
    set /a idx=%random% %%2
    echo !string[%idx%]!
    goto suite
     
    :voiture
    setlocal enabledelayedexpansion
    set string[0]=test voiture 0.
    set string[1]=test voiture 1.
    set /a idx=%random% %%2
    echo !string[%idx%]!
    goto suite

    Et ça donne ça en sortie :
    ze test

    bonjour test bot
    coucou 1

    ah bon, direct? mdr
    coucou 0.

    et si j'écris coucou alors?
    coucou 1.

    ah ok... -.-
    coucou 0.
    A noter que j'avais changé de place la position de la balise ":pastrouve", mais ça ne change rien

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 549
    Par défaut
    Le script fonctionne bien sur Windows, je viens de tester sur Wine et effectivement il y a un problème avec la variable %ERRORLEVEL% qui reste toujours à 0.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 30
    Par défaut
    Ok. Bon alors ça me rassure ...

    Moralité de l'histoire : je vais attendre de récupérer windows pour continuer mon fichier batch

    Bon we Barnabe0057

Discussions similaires

  1. [AC-2007] if dans if comment faire?
    Par hugodu28 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/08/2010, 19h46
  2. utilisation dynamique de dir(), comment faire ?
    Par N.tox dans le forum Général Python
    Réponses: 6
    Dernier message: 11/06/2008, 00h09
  3. Réponses: 7
    Dernier message: 30/08/2006, 11h07
  4. Réponses: 12
    Dernier message: 12/04/2006, 14h27
  5. centrer un DIV dans IE. Comment faire?
    Par samsso2005 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/03/2006, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo