Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Trouver un mot dans une phrase de l'utilisateur
Auteur Message
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Hello tout le monde Smile

Alors voilà, j'essaie de faire une sorte de chatbot. Pour l'heure je n'arrive à détecter qu'à ce que l'utilisateur tape "exactement".
Et là je voudrai que mon fichier BAT trouve un mot dans la phase de l'utilisateur.

Comme si le mot étant "voiture" était trouvé dans la phrase "j'ai une super voiture bleue dans le garage."
... seulement, ça parait moins simple que prévu.

Avec ce que j'ai pu lire un peu partout, j'ai testé ça :
Code:

@ECHO OFF
rem   -------------------------------------------------------------------
:debut
title Essai Trüctrüc :)
cls
color 0B
echo.
echo Bonjour. Ecrivez n'importe quoi et mettez-y le mot "coucou".

set searchVal=coucou
set /p cher=Z:\^>
SET cher|FINDSTR /b "cher="|FINDSTR /i %searchVal% >nul
IF ERRORLEVEL 1 (echo Aucun "coucou" n'est present.) ELSE (echo La phrase contient "coucou".)

pause >nul


Mais ça ne fonctionne pas... J'essaie de voir pourquoi et de trouver la solution mais c'est pas évident.

Quelqu'un a une idée, svp?

Bonne soirée Smile




______________________________________________________
Illustrateur et graphiste, n'empêche pas de s'intéresser au monde de la programmation
Visiter le site web du posteur
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Comme ça :

Code:
@ECHO OFF
rem   -------------------------------------------------------------------
:debut
title Essai Trüctrüc :)
cls
color 0B
echo.
echo Bonjour. Ecrivez n'importe quoi et mettez-y le mot "coucou".
 
set searchVal=coucou
set /p cher=Z:\^>
echo;%cher% | findstr "%searchVal%"
IF ERRORLEVEL 1 (echo Aucun "%searchVal%" n'est present.) ELSE (echo La phrase contient "%searchVal%".)
 
pause >nul





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Si tu veux savoir ce que écrit un utilisateur, c'est certainement pour remplacer des mots qu'il a écrit par d'autres mots nan ?
Et comme tu fais ça pour un chatbox, j'en déduis que tu vas utiliser cela pour remplacer des insultes Mr. Green

Je t'ai fait une fonction qui se charge de ça à ta place Mr. Green
Voici la fonction :
Code:
:replace
for %%a in (
"fuck={32145}{32145}{32145}{32145}"
"fdp={32145}{32145}{32145}"
) do set "%~1=!%~1:%%~a!"&set "%~1=!%~1:{32145}=*!"
goto :eof


Et pour qu'elle fonctionne tu dois mettre ceci tout au début après le @echo off :
Code:
setlocal enabledelayedexpansion



Pour l'utiliser tu dois mettre en paramètre le nom de ta variable sans les % :

Code:
set /p "say=You: "
call :replace "say"
echo;%say%





Petit code d'exemple :
(p.s: je trouve que ça rend bien Mr. Green )

Code:
@echo off
chcp 28591 > nul
setlocal enabledelayedexpansion
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "COLOR=%%a"
color 0B
:main
set /p ".=Bienvenue dans ce"<nul&call :color 0C " chatbox" 1
echo;Ici on censure les gros mots ;)
echo;
echo;Essai d'écrire : fuck you fdp
if exist chatbox.txt type chatbox.txt
set /p "say=You: "
call :replace "say"
(echo %say%)>>chatbox.txt
cls
goto :main



rem Function color
:color
set nL=%3
if %3 == 0 (<nul set /p ".=%COLOR%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof) else if %3 == 1 (echo.%COLOR%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof)
exit /b

rem Function replace
:replace
for %%a in (
"fuck={32145}{32145}{32145}{32145}"
"fdp={32145}{32145}{32145}"
) do set "%~1=!%~1:%%~a!"&set "%~1=!%~1:{32145}=*!"
goto :eof





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
MErci Flammrock, mais hm... ça ne fonctionne pas ici. Very Happy

Cela dit, pour les fêtes je ne suis pas chez moi et donc, ce n'est pas mon ordi (chez moi je suis sous Win7 64 bits, ici c'est linux Mint 17, donc...) peut-être que les fichiers BATCH ne sont pas totalement reconnus alors, je testerai tout ça quand je serai chez moi...

Mais il faut que j'attende le 4 janvier 2017 (l'an prochain mdr) :/ snif

Très bonne idée pour la détection de gros mots, ça peut éviter les bêtises des utilisateurs :
utilisateur : ah mais m*rd* alors !!
tchatbot : Soyez heureux, du pied gauche ça porte bonheur

Alors en fait la priorité c'est de trouver un mot "noyé" dans une phrase... histoire que l'utilisateur ne soit restreint à taper "exactement" ce que le programme attend.

Purée, vivement que je rentre, mdr




______________________________________________________
Illustrateur et graphiste, n'empêche pas de s'intéresser au monde de la programmation
Visiter le site web du posteur
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Citation:
peut-être que les fichiers BATCH ne sont pas totalement reconnus alors
cmd.exe n'existe pas sur Linux Mint (et ça, c'est pas la faute des développeurs de Linux Mint mais de Microsoft), sinon, il y a Dos9 qui permet de faire du batch sur Linux, sauf que ce code là ne marche pas vraiment, car déjà que findstr n'existe pas (encore), tout comme prompt, c'est pas près de marcher.


J'ai tenter de marquer "ceci est un test" mais ça marche pas.

Sinon, il y a une autre solution pour les couleurs en batch pur, elle marche normalement sur Linux et Windows 10 (pas les autres Twisted Evil)




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Bon, alors je crois que je vais attendre d'être revenu chez moi, pour m'intéresser de nouveau aux fichiers Batch Shocked

Linux c'est bien mais pour certains trucs, ça limite quand même, snif.

Merci de vos infos, bonne semaine de fête et à dans huit jours Cool




______________________________________________________
Illustrateur et graphiste, n'empêche pas de s'intéresser au monde de la programmation
Visiter le site web du posteur
Répondre en citant
Message Trouver un mot dans une phrase de l'utilisateur 
Tiens ça me fait penser à un vieux truc de l'époque médiévale Mr. Green
Code:

@echo off
title DEL_LINE  ^| By STRYK ^|
:: \\ Code Source By STRYK

setlocal enabledelayedexpansion enableextensions

set /p FILE=Fichier a modifier \\:
set /p SUPP=Effacer les lignes qui contiennent le mot \\:

for /f "tokens=*" %%A in ('type %FILE%') do (
    echo %%A | Find "%SUPP%">nul
    if errorlevel 1 echo %%A>>###
    )

del %FILE%
ren ### %FILE%

echo --- Modifications OK ---
pause>nul





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Message Trouver un mot dans une phrase de l'utilisateur 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch