Problème avec un programme batch [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019
-
azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019
-
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

10 réponses

Messages postés
12437
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 décembre 2019
2460
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





“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

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.
barnabe0057
Messages postés
12437
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 décembre 2019
2460 > azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

C'est quoi CEJM ?
azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

Culture, Economique, Juridique et Managériale
c'est niveau BAC+2 = BTS
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

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.
barnabe0057
Messages postés
12437
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 décembre 2019
2460
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
azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

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
barnabe0057
Messages postés
12437
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 décembre 2019
2460
de rien.

essaie chcp 65001 >nul au lieu de chcp 28591 >nul
azerty_9138
Messages postés
7
Date d'inscription
dimanche 17 novembre 2019
Statut
Membre
Dernière intervention
1 décembre 2019

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.