Bonjour à tous,
J'ai l'habitude d'utiliser des petits batchs windows pour me débrouiller et arriver où je veux dans le cadre de mon travail (renommage de fichier avec dates, modifications simples de contenu...).
Ici, pour faire la passerelle entre deux systèmes, je dois modifier un fichier CSV.
Le système amont ne me permet pas de présenter une colonne numérotée de 1 en 1.
Du coup, j'ai pensé à remplir une colonne dans le fichier Export.csv par les caractères "INCREMENTATION".
Je viens chercher et remplacer cette chaine via un petit batch et récupérer un fichier output.csv.
Mais là je sèche depuis 2 jours.
Voici mon code :
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 set $fichier=Export.csv set $chaine=INCREMENTATION set $remplace=zaza set $nb=0 if exist output.csv del output.csv setlocal EnableDelayedExpansion for /f "delims=" %%a in ('type %$fichier%') do ( set /a nb+=1 set $remplace=!nb! set $ligne=%%a set $ligne=!$ligne:%$chaine%=%$remplace%! echo !$ligne!>>output.csv) pause
J'ai bien compris en cherchant un peu partout qu'il est difficile de changer une variable dans une boucle FOR.
J'ai compris aussi que pour récupérer une variable il fallait la mettre entre point d'exclamation.
J'ai compris aussi qu'il fallait déclarer la variable incrémentée par Set /a car on va faire un petit calcul dessus
De ce fait, j'ai bien en sortie un remplacement de "INCREMENTATION" par "zaza", la valeur initiale de la variable $remplace.
nb, qui doit s'incrémenter, ne remplace pas "zaza" car effectivement ,
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part set $remplace=!$nb!
n'a pas d'effet.
De même, je n'arrive pas à visualiser à chaque boucle la valeur de nb pour savoir si tout va bien là aussi.
Du coup je voulais savoir si vous aviez un avis sur mon approche (fais-je fausse route en voulant aborder le problème ainsi ?) et une solution et/ou des conseils à me proposer.
Bonne journée à tous et surtout, joyeux Noël!
Partager