Bonjour,
Je dois écrire un script batch sous Windows, mais ce n'est pas mon fort et j'ai vraiment besoin de votre aide.
En Input j'ai un fichier qui contient deux valeurs(Valeur1 et Valeur2) séparées par une virgule ou pas (au choix).
Je dois générer un fichier en OUTPUT qui contient:
Une clé unique sur 16 caractères incrémentées par 1 pour chaque nouvelle ligne créée.
Puis j’insère la valeur1 à une position précise colonne 45.
La Valeur2 doit s’insérer en colonne 97.
Particularité la valeur1 peut contenir de 4 à 16 caractères et sur une ligne il peut y avoir la Valeur1 mais pas de valeur2.
J'ai via, différents sites, écris un premier script mais le positionnement de mes valeur1 et Valeur2 n'est pas correct sans doute à cause de la valeur1 à taille "flexible".
Exemple de fichier INPUT:
Le script ecrit:AAAA,
BBBBBBBB,
AAAAA,JJJJJJ
AAAAAAAAA,HHHHHHH
AAAAAA,EEEEEEE
BBBBBBBBBBBBBBBB,ZZZZZZ
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 @echo off setlocal enabledelayedexpansion set source=input1.txt set sortie=output.txt set debut_cle=000000000000 set fin_cle=1000 set AAA=A001 set BBB=O001 set _24caracteres= 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 !cle_unique!%AAA%%_24caracteres%!valeur1!%_36caracteres%!valeur2! ) else ( echo !cle_unique!%BBB%%_24caracteres%!valeur1!%_36caracteres%!valeur2!) )>>"%sortie%" ) endlocal PAUSE
Merci par avance de votre aide.
Partager