Loop For/F : besoin d'un coup de main

Fermé
Tofdu31 - 29 nov. 2020 à 21:34
 Utilisateur anonyme - 30 nov. 2020 à 19:23
Bonjour,

Alors, suis pas vraiment expert.

J'ai des données dans un fichier sur chacune des lignes

ligne A
ligne B
ligne C
ligne D
ligne E


Je suis en train de construire un batch.
Alors voici mes tests
FOR /F %%i in ('type Fichier_data.csv') do echo TOTO %%i >> final.txt


Donc dans mon fichier final.txt, je trouve bien l'ensemble des lignes du fichier Fichier_data.csv et avec TOTO inséré devant chacune des lignes

Maintenant, si je veux utiliser à la place une variable comme par exemple %cequejecrisavantlaligne% :

Avant bien sur, dans mon script j'ai :

set cequejecrisavantlaligne=TATA


et je mets à la place de TOTO ma variable : %cequejecrisavantlaligne%

FOR /F %%i in ('type Fichier_data.csv') do echo %cequejecrisavantlaligne% %%i >> final.txt


ça fonctionne.

Toutefois, si dans ma variable, je mets des caractères spéciaux, jusque là ça marche :

set cequejecrisavantlaligne={"name":


Mais si (et il me le faut) je rajoute un guillemet, là ça marche pas :

set cequejecrisavantlaligne={"name":"

Après lecture de plusieurs tuto, je n'arrive toujours pas à réussir. Comment je peux faire pour que la boucle n'interprète pas les caractères spéciaux ?

Merci pour votre aide

Tof

Configuration: Windows / Chrome 87.0.4280.67
A voir également:

1 réponse

Utilisateur anonyme
30 nov. 2020 à 19:23
Bonsoir Tof,
Je ne suis pas un habitué du batch mais ton problème me titillait...
Voici ce que je te propose :
set cequejecrisavantlaligne={"name":

FOR /F "delims=" %%I IN (Fichier_data.csv) do echo %cequejecrisavantlaligne%^" %%I>> final.txt


- "delims=" empêche que ta ligne soit coupée au niveau de l'espace ou d'une tabulation qui sont les séparateurs par défaut sinon "ligne A" => "ligne"
- Le guillemet est ajouté échappé par ^ dans le FOR

Si j'ai bien compris le résultat correspond à ton attente.
0