Page 1 sur 2

RESOLU MERCI besoin d'une aide pour "construire" un BAT MERCI

Posté : 11 déc. 2018 15:21
par MAXLEGRAN
Bonjour,

je travaille en informatique mais mes connaissances en BAT sont limitées.
Je dois fournir un script BAT qui prendrait des valeurs dans un fichiers Excel ou TXT et les insérer dans un autre fichier plus complexe de type:
Positon 1 à 16 Clé unique
Position 17 Sur 3 caractères
Etc....
Je vous sollicite donc pour m'aider si vous le voulez bien à construire ce type de script BAT.

Merci par avance pour vos aides.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 12 déc. 2018 03:40
par 300317
Bonjour,
si tu pouvais donner un exemple de la composition du fichier dans lequel
tu souhaites récuperer tes valeurs et où tu souhaiterais les insérer dans le fichier cible.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 12 déc. 2018 14:21
par MAXLEGRAN
Bonjour,
J'ai 2 exemples de fichiers le premier Input et le second Output. Mais je ne vois pas comment les inserer dans ce message, le format TXT ou XLS n'est pas pris en charge?
Alors voici un extrait:
FICHIER ENTREE:
VALEUR1 VALEUR2
TXX1H8 TXX1H8
TXX1H9 TXX1H9
TXX1H10 TXX1H10
TXX1H11 TXX1H11

Fichier généré via BAT:
ZONE PRIVEE
CLE UNIQUExxxxxxA000DESCRIPTION
CLE UNIQUExxxxxxA001DESCRIPTION VALEUR1XXXXXXXXX VALEUR2
CLE UNIQUExxxxxxA001DESCRIPTION CHAMP DESCR VALEUR1XXXXXXXXX VALEUR2

Du fichier input j'ai deux valeurs et dans le fichiers Output ils doivent apparaitre dans des colonnes bien précises.
Exemple de la structure du fichier output
<field id="CLE UNIQUE" len="16"
<field id="Rese" len="1"
<field id="CLE2" len="3"
<field id="DESC" len="24"
<field id="VALEUR1" len="16"
<field id="DESCRIPT" len="16"
<field id="RESERVE" len="6"
<field id="RESERVE" len="4"
<field id="RESERVE" len="6"
<field id="RESERVE" len="4"
<field id="VALEUR2" len="8"

Merci beaucoup pour vos conseils et aide.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 13 déc. 2018 02:47
par 300317
Bonjour,
apparement non, pas moyen d'insérer un txt dans le message.
Donc si j'ai bien compris, dans ton fichier source, chaque ligne est constituée
de deux valeurs, separées par des espaces ?

Si tel est le cas on va pouvoir les récupérer de la sorte

Code : Tout sélectionner

for /f "tokens=1,2 delims= " %%a in (input.txt) do (

)
En ce qui concerne l'écriture, il faudrait regarder si les lignes où insérer les valeurs reviennent à la même fréquence.
Le cas échéant, dans la première boucle, on pourrait faire une autre boucle FOR sur le fichier output et identifier les lignes où insérer les valeurs à l'aide de deux modulos sur un compteur.
Si possible, une capture d'écran des deux fichiers pourrait m'être utile.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 13 déc. 2018 13:19
par MAXLEGRAN
Bonjour,

Voici les deux captures d’écrans pour les deux fichiers, j’espère que cela est suffisamment clair.
Pour être clair dans ma démarche, il faudrait:
Que je puisse créer une clé unique sur 16 caractères incrémentée de 1 à chaque ligne (colonne de 1 à 16),
Puis insérer la valeur1 du fichier Input en colonne 45 et la seconde valeur2 en colonne 91.
Je ne sais pas si cela est possible?

Merci beaucoup pour votre aide.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 13 déc. 2018 15:50
par 300317
Bonjour, c'est quelque chose comme ça qu'il te faudrait ?

Code : Tout sélectionner

@echo off
setlocal enabledelayedexpansion

set source=input.txt
set sortie=output.txt

set debut_cle=000000000000
set fin_cle=1000

set _28caracteres=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
set _30caracteres=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
::--------------------------

for /f "skip=1 usebackq tokens=1,2 delims= " %%a in ("%source%") do (

set /a fin_cle+=1
set cle_unique=%debut_cle%!fin_cle!

set valeur1=%%a
set valeur2=%%b

(
echo !cle_unique!%_28caracteres%!valeur1!%_30caracteres%!valeur2!
)>>"%sortie%"

)
endlocal
pause
exit

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 13 déc. 2018 17:12
par MAXLEGRAN
Bonjour,

Merci beaucoup pour ce premier exemple.

je vais faire quelques tests et vous tiens au courant.

Encore merci

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 01 avr. 2019 18:30
par MAXLEGRAN
Bonjour,

Après de longs mois de silence et je m'en excuse car j'ai été appelé à d'autres services et là je reviens à mon poste. Désolé.

j'ai fais quelques essais avec le script proposé.
J'ai deux problèmes:
le premier le script affiche des X sur plusieurs colonnes, il faudrait que ce soit des " " Blancs ou espaces.
Pour ce premier point, j'ai remplacé les XXXXXXX par des espaces.
Le second problème la valeur 2 n'est pas écrite en colonne 97 comme demandé mais plutôt en 65.

Enfin dans mon fichier INPUT, on peut trouver sur une ligne la VALEUR1 mais pas de Valeur2 et sur d'autres lignes les Valeurs 1 et 2.
Dernier point, je ne me souviens plus si l'on peut insérer des lignes de Textes dans le fichiers Output, genre un titre par exemple.

merci de votre compréhension et pour votre aide.

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 02 avr. 2019 04:44
par 300317
Salut,
le premier"problème" n'en est plus un puisque tu l'as résolu.
Quant au second : à l'époque tu voulais valeur2 en colonne 91, pas 97
MAXLEGRAN a écrit : 13 déc. 2018 13:19
Pour être clair dans ma démarche, il faudrait:
Que je puisse créer une clé unique sur 16 caractères incrémentée de 1 à chaque ligne (colonne de 1 à 16),
Puis insérer la valeur1 du fichier Input en colonne 45 et la seconde valeur2 en colonne 91.
donc :

cle_unique.length = 16
16 + 28 espaces = 44

valeur1 commence donc à 45 et fini à 60 (valeur1.length = 16)

60 + 30 espaces = 90
valeur2 commence donc à 91

Code : Tout sélectionner

echo !cle_unique!%_28caracteres%!valeur1!%_30caracteres%!valeur2!
Si valeur2 se trouve en 65 c'est qu'il y a eu réduction de longueur quelque part.
Il faut alors rajouter des espaces derrière valeur1.

Pour différencier les deux types de lignes (non demandé à l'époque)

Code : Tout sélectionner

if not defined valeur2 (
echo valeur1 sans valeur2
) else (
echo valeur1 et valeur2
)
Quant au dernier point la réponse semble évidente…

Re: besoin d'une aide pour "construire" un BAT MERCI

Posté : 02 avr. 2019 11:53
par MAXLEGRAN
Bonjour,

merci pour ces réponses. J'ai fais quelques essais, et je suis toujours en colonne 65 pour Valeur2. J'ai modifié le SET en positionnant à différents nombre mais toujours rien de mieux.
J'ai ajouté les lignes proposées
if not defined valeur2 (
echo valeur1 sans valeur2
) else (
echo valeur1 et valeur2
)
Et là je n'ai plus les Valeur1 sans Valeurs2??
Je pense que j'ai "merdé" quelque part mais je ne vois pas où.
Voici le Script que j'ai modifié:
@echo off
setlocal enabledelayedexpansion

set source=input.txt
set sortie=output.txt

set debut_cle=000000000000
set fin_cle=1000

set _28caracteres=
set _36caracteres=
::--------------------------

for /f "skip=1 usebackq tokens=1,2 delims= " %%a in ("%source%") do (

set /a fin_cle+=1
set cle_unique=%debut_cle%!fin_cle!

set valeur1=%%a
set valeur2=%%b
if not defined valeur2 (
echo valeur1 sans valeur2
) else (
echo valeur1 et valeur2
)
(
echo !cle_unique!%_28caracteres%!valeur1!%_36caracteres%!valeur2!
)>>"%sortie%"

)
endlocal
pause
J’espère que vous pouvez m'aider et Merci par avance.