Problème avec un programme batch

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
    1. Utilisateur anonyme
       
      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
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Utilisateur anonyme
         
        C'est quoi CEJM ?
        0
    2. Utilisateur anonyme
       
      Culture, Economique, Juridique et Managériale
      c'est niveau BAC+2 = BTS
      0
  2. Utilisateur anonyme
     
    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
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      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
    2. Utilisateur anonyme
       
      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
    3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      de rien.

      essaie chcp 65001 >nul au lieu de chcp 28591 >nul
      0
    4. Utilisateur anonyme
       
      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