Problème avec un programme batch

Résolu/Fermé
Utilisateur anonyme - 17 nov. 2019 à 17:16
 Utilisateur anonyme - 19 nov. 2019 à 22:25
Bonjour,

j’aimerais amélioré mon programme en batch,
car je n'est pas eu le résultat voulu ( un programme qui permet de rentrer des abréviation ( pour les convertir en mots français )).
Le problème c'est que quand je convertir une phrase, je peut seulement convertir un seul mot a la fois. Donc voici le code :

@echo off

set economique=eco
set transport=tra
set logistique=log
echo quel est ta question ?
:Q
set /p cre=
if %cre% equ %logistique% echo logistique
if %cre% equ %transport% echo transport
if %cre% equ %economique% echo economique

pause>nul
goto Q


je pense que le problème doit venir de le partie de :Q, car les commandes "echo" et "equ" ne sont pas adapter pour cet méthode.

Il faudrait par exemple avec une phrase type :

La log et le tra ce sont des moyen eco d'acheminer de la marchandise.

A avoir se résultat là :

La logistique et le transport ce sont des moyen economique d'acheminer de la marchandise.

Si quelqu’un a une idée, la solution ou avoir le résultat de la pharse type je suis preneur

Bonne journées a vous tout

2 réponses

barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 4 917
Modifié le 17 nov. 2019 à 20:36
Bonjour,

1) Tu peux remplacer "equ" par "=="

2) Concernant la construction de ton programme, si tu dois avoir plusieurs dizaines voire centaines d'abréviations tu devrais utiliser un fichier texte pour les stocker.

Voilà le fichier abreviations.txt :
economique#eco
transport#tra
logistique#log


Voilà le script correspondant :
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul

:debut
set "phrase="
cls & echo. & echo quel est la phrase à convertir ?
set /p "phrase="

for /f "tokens=1,2 delims=#" %%A in (abreviations.txt) do set phrase=!phrase:%%B=%%A!

echo. & echo !phrase!

echo. & pause
goto :debut




2
Utilisateur anonyme
Modifié le 17 nov. 2019 à 21:25
Merci beaucoup barnabe0057,
dans le fichier abreviations.txt je peux en rajouter ou en modifié,
sa fonctionne à la perfection même avec phrase type. Sa va beaucoup m'aidée pour faire mes synthèse en CEJM vu avec le prof il nous laisse pas de pause avec ses long phrases.
0
barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 4 917 > Utilisateur anonyme
17 nov. 2019 à 21:48
C'est quoi CEJM ?
0
Utilisateur anonyme
17 nov. 2019 à 21:55
Culture, Economique, Juridique et Managériale
c'est niveau BAC+2 = BTS
0
Utilisateur anonyme
Modifié le 19 nov. 2019 à 19:55
Il a juste 2 petit problème :
le premier c'est lorsque j'ai écrit par exemple professionnelle dans le programme et sa me marque pourofessionnelle, car l'abréviation de pr (de pour) est prie en compte. Dans se cas il faudrait que les abréviation soit ( isolé ) par exemple : lorsque qu'on écrit professionnelle que le pr de professionnelle ne soit pas prie en compte comme étant une abréviation. Mais que le pr tout seul soit prie comme étant une abréviation (de pour). j'ai essayer de mettre des espace comme se là pour# pr mais cela donne toujours le même résulta. Et pour l'autre problème les accent des mots, je savait que se problème exister avec les caractère spéciaux en batch comme économique en économique.
0
barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 4 917
Modifié le 19 nov. 2019 à 21:05
Je n'ai aucun problème d'accent chez moi, as-tu bien mis la ligne suivante :
chcp 28591 >nul

Concernant l'autre problème il suffit de mettre des espaces dans le script comme ceci :

@echo off
Setlocal EnableExtensions EnableDelayedExpansion
chcp 28591 >nul

:debut
set "phrase="
cls & echo. & echo quel est la phrase à convertir ?
set /p "phrase="

for /f "tokens=1,2 delims=#" %%A in (abreviations.txt) do set phrase=!phrase: %%B = %%A !

echo. & echo !phrase!

echo. & pause
goto :debut
0
Utilisateur anonyme
19 nov. 2019 à 21:57
oui je l'ai bien recopier
chcp 28591 >nul

pour la correction du code sa na pas marcher, mais j'ai amélioration avec l’exemple
pr 
ne modifie plus le mot professionnelle en pourofessionnelle. La correction c'est
pour#pr 
avec un espace après le pr . Il n'a plus le problème de l'abréviation qui change le mot mais ils prenne de l'espace 2 exemple : pr et bn conversion pouret bien
bn et pr conversion bienet pour

essayerez de voir le problème avec l'espace
merci de ma voir fait trouver l'idée pour le changement de mot
0
barnabe0057 Messages postés 14453 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 24 novembre 2024 4 917
19 nov. 2019 à 22:05
de rien.

essaie chcp 65001 >nul au lieu de chcp 28591 >nul
0
Utilisateur anonyme
Modifié le 19 nov. 2019 à 22:25
MERCI BEAUCOUP le problème des caractère spéciaux est régler et j'ai trouver le problème de l'espace, il fallait mettre un espace de
pour #pr 
je l'ai fait avec mes abréviation quelque exemple :
économique #éco 
transport #tra
logistique #log
service #ser
bien #bn
fonction #fon
entreprise #ent
offre #off
demande #dem
stock #sto
commerce #com
finance #fin
inventaire #inv
système #sys
prix #px
publique #pub
doit #dt
pour #pr
permet #per


"quelque fois il a certain problèmes qu'il sont bête mais qui sont sous nos yeux"
encore une fois MERCI BEAUCOUP, il ne devrai plus avoir de problème et de bien me rappeler que les espaces sont très important.
0