Partage
  • Partager sur Facebook
  • Partager sur Twitter

Découper une chaîne de caractères - Batch - INI

Category#=TEXTES

    2 juillet 2024 à 16:45:08

    Bonjour les amis, je suis nouveau dans la gagne...

    J'ai un petit problème, pas facile à résoudre...

    J'ai une liste de Category dans un fichier INI

    Mes besoins c'est d'avoir la dernière donnée sur la dernière ligne

    Dans mon fichier batch ça affiche:

    Category3=PROMO

    Ça fonctionne bien

    et avec le temps d'autres données seront ajoutés

    Exemple:

    Category4=SAMPLE

    etc...

    Ma question dans mon fichier Batch, j'aimerais pouvoir afficher à l'écran

    Dernière données du fichier INI

    Category3=PROMO

    J'aimerais découper le texte Category3=PROMO

    Pour avoir ceci:

    Category3=

    et au chiffre 3 ajouté +1

    Faire apparaître à l'écran ensuite

    Category4=

    Entrée votre données de 8 caractères max

    J'aimerais que le programme, nous empêche d'avoir plus de 8 caractères

    Résultat affiché à l'écran

    Category4=ABCD1234

    Appuyez une touche pour continuer

    Merci à l'avance pour vos réponses...



    Fichier INI

    Category0=AUDIO

    Category1=TEMPS

    Category2=PUB

    Category3=PROMO

    --- Fichier Batch ---

    @echo off
    for /f "delims=" %%a in ('type fichier.ini') do set "dernière=%%a"
    echo %dernière%

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2024 à 15:36:24

      Merci pour ta réponse Zaibai,

      Pour le lien web de ma demande, voici le lien, pour en faire profiter la communauté...

      https://openclassrooms.com/forum/sujet/decouper-une-chaine-de-caracteres-batch-ini-95ad5#message-95134565

      Ça fonctionne très bien si j'ai 4 lignes de données
      Comme je t'ai donnée au début

      Fichier INI

      Category0=AUDIO
      Category1=TEMPS
      Category2=PUB
      Category3=PROMO

      Le programme va m'écrire
      Category4=
      Ça fonctionne très bien

      Mais si j'ai un autre fichier ini avec les données suivantes:
      Category0=AUDIO
      Category1=temp
      Category2=PUB
      Category3=PROMO
      Category4=ALLO
      Category4=E
      Category5=F
      Category6=G
      Category7=H
      Category8=I
      Category9=J
      Category10=K
      Category11=L
      Category12=M
      Category13=N
      Category14=O
      Category15=P

      Il y a une erreur
      Voici ce qu'il m'écrit:


      Derniere donnees du fichier INI :
      Category15=P (C'est Ok)

      Ajouter une nouvelle donnee ? (oui/non) : oui
      Entree votre donnees de 8 caracteres max.
      Category6=

      Le programme me donne 6 au lieux de 16, il doit manquer un petit calcule

      Si tu as le temps, de faire le test, ajoute ou retranche des lignes soit 10 ou 15 ou 20, dans le fichier.ini,  pour voir si la donné Category#= est toujours correct...

      Merci pour ton aide Zaibai

      Serge
      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2024 à 0:09:36

        Bonjour,

        Je pense que ce sujet devrait être dans programmation -> Autres langages. J'ai demandé le déplacement du topic.

        Par rapport au script que je t'avais fournis par MP, j'ai modifié la boucle for afin d'y extraire le nombre (avant il ne récupérait que le dernier caractère de "CategoryX" et donc si ça dépassait 9 ça ne fonctionnait plus.

        Voici la nouvelle version qui devrait être OK :

        @echo off
        echo.
        echo Derniere donnees du fichier INI :
        
        for /f "tokens=1-3* delims==y" %%a in ('type fichier.ini') do (
            set "sLast=%%ay%%b=%%c"
            set "sCategory=%%a"
        	set /A iCategory=%%b
        )
        echo %sLast%
        
        set /A iCategory=%iCategory% + 1
        
        :Add_answer
        echo.
        set /P sAnswer="Ajouter une nouvelle donnee ? (oui/non) : "
        If /I "%sAnswer%"=="oui" goto :Add
        If /I "%sAnswer%"=="non" goto :End
        echo Reponse incorrecte.
        goto :Add_answer
        
        :Add
        echo.
        set "sNewCategory=Category%iCategory%="
        echo Entree votre donnees de 8 caracteres max.
        set /P sAddData="%sNewCategory%"
        call :Verif_length %sAddData%
        echo %sNewCategory%%sAddData%>>fichier.ini
        echo Nouvelle donnee valide.
        
        :End
        echo.
        pause>nul | echo Fin du script. 
        exit
        
        :Verif_length
        set /a iCount=0
        set "sVarValue=%1"
        set "sVarValueLen=%1"
        
        :Verif_length_loop
        If defined sVarValueLen (
            set sVarValueLen=%sVarValueLen:~1%
            set /a iCount +=1
            goto :Verif_length_loop
        )
        If %iCount% GTR 8 (echo Il y a plus de 8 caracteres. & goto :Add)
        GOTO:EOF
        



        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2024 à 1:39:02

          Bonjour Zaibai, tout fonctionne bien sauf que j'ai
          2 messages d'erreurs...
          Il manque un opérande.

          SVP juste me montrer ou enlever ou corriger les 2 données opérande.

          Merci

          Résultat:


          Derniere donnees du fichier INI :
          Il manque un opérande.
          Il manque un opérande.
          Category110=ALLO

          Ajouter une nouvelle donnee ? (oui/non) :
          Reponse incorrecte.

          Ajouter une nouvelle donnee ? (oui/non) : oui

          Entree votre donnees de 8 caracteres max.
          Category111=ABCDEFGHI
          Il y a plus de 8 caracteres.

          Entree votre donnees de 8 caracteres max.
          Category111=ABCDEFGH
          Nouvelle donnee valide.

          Fin du script.

          • Partager sur Facebook
          • Partager sur Twitter
            14 juillet 2024 à 22:42:17

            Bonjour,

            Il faudrait voir à quel moment le message "il manque un opérande" apparait.

            A mon avis le message "il manque un opérande" vient de la ligne 12 (set /A iCategory=%iCategory% + 1).

            Je pense que la ligne 8 ne se passe pas comme prévu (set /A iCategory=%%b) car %%b ne doit pas être un nombre et donc la ligne 12 tombe en erreur car il doit vouloir augmenter de 1 une variable surement vide.

            Ou alors il y a un problème avec la ligne 28 (echo %sNewCategory%%sAddData%>>fichier.ini), je ne comprends pas pourquoi l'erreur "il manque un opérande" se retrouve dans ton fichier.ini.

            Tu peux supprimer la ligne 1 (@echo off) et exécuter le script pour voir en détail ce qui se passe.

            -
            Edité par Zaibai 14 juillet 2024 à 22:46:14

            • Partager sur Facebook
            • Partager sur Twitter

            Découper une chaîne de caractères - Batch - INI

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown