Multiplier la valeur d'un champ

Résolu/Fermé
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 30 déc. 2015 à 04:39
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 11 janv. 2016 à 23:52
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 déc. 2015 à 08:55
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
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
Modifié par DelNC le 30/12/2015 à 11:29
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 déc. 2015 à 12:10
il faut pratiquer et s'exercer
là, il y a pleins d'exemples
http://www.hotline-pc.org/batch.htm
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
1 janv. 2016 à 10:36
Ok, merci pour tes conseils.

Bonne année !!
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
4 janv. 2016 à 03:07
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 janv. 2016 à 08:47
chez moi il affiche
T0047;Tuyau 1m;Marque2;jardinage;2383;promo
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 1 999
11 janv. 2016 à 23:52
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