Bonjour à tous,

Je souhaiterai ré-écrire un fichier toto.dat qui se présente ainsi :

GRID 15161541 5105000412.716 2631.39 -42.4544
GRID 15161551 5105000412.534 2630.03 -83.4847
GRID 15161561 5105000413.749 2627.22 -143.298
GRID 15161571 5105000412.536 2628.92 -111.41
GRID 15161581 5105000408.983 2291.43 1575.36
......
en supprimant certaines ligne GRID, référencé dans un autre fichier nommé GRID_REMOVE.dat dans lequel elle sont listés ligne par ligne comme ceci :

GRID 15161561
GRID 15161571
........

Donc le batch doit :
1-ouvrir le fichier toto.dat lire la chaine de charactère GRID 15161541
2-ouvrir le fichier GRID_REMOVE.dat lire la première ligne
3-Comparer la chaine de caractère GRID 15161541 avec la première ligne du fichier GRID_REMOVE.dat
4- Si les deux chaines de caractères sont différentes alors il ré-écrit la ligne entière provenant du fichier toto.dat dans le fichier toto_update.dat
5- Si les deux chaines de caractères sont identiques alors il ré-écrit la ligne entière du fichier provenant du fichier toto.dat dans le fichier toto_update.dat en y ajoutant au début un $ (je ne veux pas supprimer la ligne tout de suite, mais l'identifier avant, d'ou le $).

Alors j'ai pensais à faire deux boucles comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
for /f %%i in (toto.dat)
for /f %%j in (GRID_REMOVE.dat) do (
if %%i NEQ %%j echo %%i >> toto_update.dat
if %%i == %%j   echo "$"%%i >>toto_update.dat
Seulement le for /f %%i in (toto.dat) permet de lire la ligne entière du fichier toto.dat et non la chaine de caractère GRID 15161541.

Donc comment lui dire de prendre par exemple les 16 premiers caractères de la ligne ?

Pour la lecture du fichier GRID_REMOVE.dat peut importe car la ligne lu, sera égale à la chaine de caractère souhaité.

Merci de votre aide par avance