Bonjour à tous!
Je débute en scripts/batch pour le compte d'un stage et je galère un peu à écrire un script.
Voilà mon problème. Je dois normaliser un fichier texte contenant des zones de coordonnées géographiques (longitudes et latitudes) correspandants à des couvertures satellite. Le fichier est sous cette forme :
Où n_cont est le nombre de surfaces différentes (couverture satellite difinie par un ensemble de sommets),gain une valeur à récupérer et n_point le nombre de points par surface.
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
22
23
24
25
26
27
28
29
30
31
32
33
34 [FormatInfo] format_ver=1 [GeoMain] adm=USA sat_name=INTELSAT long_nom=64.15 [COHeader] beam_id=Z4 n_cont=19 [C1] gain=-9.00 n_point=618 p1=144.931;19.459 p2=144.903;19.938 p3=144.885;20.244 p4=144.868;20.521 (...) /* J'ai coupé il y a 618 lignes*/ [C2] gain=-3.00 n_point=208 p1=98.014;-5.885 p2=98.139;-5.806 p3=98.290;-5.705 p4=98.696;-5.389 (...) [C3] gain=-2.00 n_point=73 p1=138.951;28.343 p2=144.221;28.826 p3=144.221;28.833 p4=144.218;28.864 (...) etc...
Je chercher à mettre en place un script qui respecterait l'algorithme suivant :
A termes mon but est de générer un fichier texte normalisé en colonnes afin de pouvoir facilement le charger dans une base de données SQL.
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 echo beam_id;gain;longitude;latitude >> coverage.txt * Trouver valeur de 'n_cont=' * Stocker %n_cont% for /L %%i in (1,1,%n_cont%) do ( * Trouver ligne [C%i] * Trouver valeur de 'gain=' * Trouver valeur de 'n_point=' * Ligne suivante for /L %%j in (1,1,%n_point%) do ( set %i%;%gain%; > coverage.txt //insérer les valeurs dans le fichier texte * décaler curseur après "p%j%=" * insérer fin de la ligne dans fichier texte ( qui vaut "lon;lat" * ligne suivante ) )
Je cherche donc à parcourir proprement les lignes de mon fichier texte (une par une à partir des p1,p2,p3...) et en extraire des valeurs ou des portions de lignes, ne garder que "138.951;28.343" sur "p1=138.951;28.343" par exemple.
J'ai vu cette solution qui semble se rapprocher de ce que j'aimerais faire. Mais je vous avoue ne pas avoir assez de bouteille dans ce language pour l'adapter à ma sauce.
Avis donc à âme charitable pour un petit coup de pouce. Merci!!
Partager