Bonjour,

J'écris un batch pour ajouter une ligne dans un fichier texte (.bat)
J'ajoute du texte sur la troisième ligne du fichier. (variable %tmp%)

Mes variables:
mess_rem = texte à ajouter en début de fichier
mess = texte à ajouter
fichier_sync_tmp = nom du fichier temporaire
fichier_sync = fichier d'origine a modifier

Mon code:

Code : 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
set /a a1=0
set /a tmp=3

rem ajout de la première ligne
echo %mess_rem% > %fichier_sync_tmp%

rem on lit le fichier ligne par ligne
for /f "delims=" %%a in ('type %fichier_sync%') do call :subfor %%a

goto suite

rem on traite ligne par ligne
:subfor
  set /a a1=a1+1
  rem si le numéro de ligne <> %tmp% je colle le texte d'origine
  rem si le numéro de ligne = %tmp% je colle mon texte ajouté
  if not %a1% == %tmp% echo %1 >> %fichier_sync_tmp%
  if %a1% == %tmp% echo %mess% >> %fichier_sync_tmp%
  goto :EOF

:suite
Mon problème :
Lors de la commande do call :subfor %%a dans le :subfor, je ne retrouve que le premier mot de chaque ligne.
Si je met do call :subfor "%%a" j'ai bien la ligne complète mais avec entre guillemets.

Si quelqu'un a une solution ...

Merci