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:
AAAA,
BBBBBBBB,
AAAAA,JJJJJJ
AAAAAAAAA,HHHHHHH
AAAAAA,EEEEEEE
BBBBBBBBBBBBBBBB,ZZZZZZ
Le script ecrit:
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.