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 :
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.
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
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
Partager