Multiplier la valeur d'un champ

Résolu
DelNC Messages postés 2360 Statut Membre -  
DelNC Messages postés 2360 Statut Membre -
Bonjour à tous et toute,

Désolée de vous déranger de nouveau, mais je tourne en rond depuis 2 jours.
Voilà, dans un fichier texte, je dois diviserle contenue d'une de mes colonnes par 3.

Voilà un morceau du document texte.
T0047;Tuyau 1m;Marque2;jardinage;75;promo
T00747;Tuyau 1m;Marque2;jardinage;30;promo

et je veux avoir

R123;Rateau;Marque1;jardinage;25;promo
R123;Rateau;Marque1;jardinage;10;promo

Pour l'instant j'ai ce code là.

set /a prix=%prix%/3
::je vais à la colonne 5 où ma valeur se situe (après le quatrième ;)

for /F "delims=; tokens=4*" %%a in (articles.txt) do (
set a=%%a
set a=!a:/0.6=!

::là je récupère les éléments avant ma colonne 5
::je mets la nouvelle valeur
::je mets le reste de ma ligne

echo %%a;%prix%;%%b
echo %%a;%prix%;%%b >>resultat2.txt
)


Je vous remercie d'avance pour l'aide que vous m'apporterez.
Bonnes fêtes à tous.

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    C:> type f1.txt
    T0047;Tuyau 1m;Marque2;jardinage;75;promo
    T00747;Tuyau 1m;Marque2;jardinage;30;promo
    C:> cc
    T0047;Tuyau 1m;Marque2;jardinage;25;promo
    T00747;Tuyau 1m;Marque2;jardinage;10;promo

    C:> type cc.bat
    @echo off
    setlocal enabledelayedexpansion
    for /F "delims=; tokens=1-6" %%a in (f1.txt) do (
    set a=%%e
    set /a a=!a!/3
    echo %%a;%%b;%%c;%%d;!a!;%%f
    )
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Merci beaucoup dubcek.

      Dis moi quel est ton secret pour réussir à faire tes scripts aussi rapidement.
      Tu aurais des pages internet à me conseiller ?

      Sinon je n'y arriverais jamais toute seule.

      Encore merci et passe de bonnes fêtes
      :-)
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      il faut pratiquer et s'exercer
      là, il y a pleins d'exemples
      http://www.hotline-pc.org/batch.htm
      0
    3. DelNC Messages postés 2360 Statut Membre 2 010
       
      Ok, merci pour tes conseils.

      Bonne année !!
      0
    4. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour dubcek

      J'ai un soucis, pour la valeur à diviser.
      Ca m'affiche au résultat que les premiers chiffres
      exemple au départ c'est
      T00747;Tuyau 1m;Marque2;jardinage;7150;promo

      au final
      T00747;Tuyau 1m;Marque2;jardinage;7;promo

      J'essaye de voir d'où peut venir le problème
      @+
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      chez moi il affiche
      T0047;Tuyau 1m;Marque2;jardinage;2383;promo
      0
  2. DelNC Messages postés 2360 Statut Membre 2 010
     
    Hello

    Les points posaient problèmes, solution choisie c'est dans la colonne e par de points ni d'espace

    ::partie du script qui retire tous les guillemets
    @echo off
    setlocal enabledelayedexpansion
    for /F "delims=" %%a in (articles.txt) do (
    set a=%%a
    set a=!a:"=!
    echo !a!
    echo !a! >>resultat.txt
    )


    ::partie du script qui retire tous les espace dans la colonne PUMP
    :: s il y a des espaces on ne peut pas realiser la multiplication
    @echo off
    setlocal enabledelayedexpansion
    for /F "delims=; tokens=1-8" %%a in (resultat.txt) do (
    set a=%%e
    set a=!a: =!
    echo %%a;%%b;%%c;%%d;!a!;%%f;%%h;%%g
    echo %%a;%%b;%%c;%%d;!a!;%%f;%%h;%%g >>resultat2.txt
    )


    :: on ne peut pas diviser par 0.6 donc on multiplie par 1666 puis divise par 1000
    @echo off
    setlocal enabledelayedexpansion
    for /F "delims=; tokens=1-8" %%a in (resultat2.txt) do (
    set a=%%e
    :: set /a a=!a!/0.6
    set /a a=!a!*16666/10000

    echo %%a;%%b;%%c;%%d;!a!;%%f;%%h;%%g
    echo %%a;%%b;%%c;%%d;!a!;%%f;%%h;%%g >>resultat3.txt
    )
    0