Suppression de certaines lignes dans un fichier texte
Résolu
Cybmatt
Messages postés
4
Statut
Membre
-
Cybmatt Messages postés 4 Statut Membre -
Cybmatt Messages postés 4 Statut Membre -
Bonjour,
J'ai un traitement automatisé à mettre en place à l'aide d'un fichier batch Windows.
Voici ma problématique :
J'ai tout un ensemble de fichiers plats (format .csv), dont le séparateur est le point virgule. Ils ont tous la même construction :
- une première ligne dont les trois premiers caractères sont "00;"
- n lignes dont les trois premiers caractères sont "01;"
Voici un exemple :
00;20001;ABC;20190617;1224;19;01;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01;123456789;20190617;ABCD;81257033099;20001201906170000001;EUR;1906;25;FR;09055478004;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX AABB
01;123456789;20190617;ABCD;81257033099;20001201906170000002;EUR;1906;25;FR;09045845016;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX CC DD
J'ai pour objectif de :
- rassembler tous les fichiers csv dans un seul et même fichier csv nommé "FVMA_global.csv"
- supprimer dans ce dernier toutes les lignes commençant par "00;" en créant un fichier propre nommé "FVMA_global_<DateDuJour>.csv"
Pour la première étape, pas de souci, j'ai utilisé ce code :
Ca me produit donc bien un fichier nommé "FVMA_global.csv"
Je ne parvient pas à faire la deuxième partie du traitement. J'imagine qu'il faut utiliser une boucle "for /f" également, mais je ne parviens pas à faire des tests sur les 3 premiers caractères, et à faire en sorte, en fonction de ce test, de mettre le contenu de la ligne parsée dans un nouveau fichier.csv (qui est le fichier final, nettoyé des lignes en "00;"
Un grand merci d'avance pour votre précieuse aide.
J'ai un traitement automatisé à mettre en place à l'aide d'un fichier batch Windows.
Voici ma problématique :
J'ai tout un ensemble de fichiers plats (format .csv), dont le séparateur est le point virgule. Ils ont tous la même construction :
- une première ligne dont les trois premiers caractères sont "00;"
- n lignes dont les trois premiers caractères sont "01;"
Voici un exemple :
00;20001;ABC;20190617;1224;19;01;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01;123456789;20190617;ABCD;81257033099;20001201906170000001;EUR;1906;25;FR;09055478004;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX AABB
01;123456789;20190617;ABCD;81257033099;20001201906170000002;EUR;1906;25;FR;09045845016;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX CC DD
J'ai pour objectif de :
- rassembler tous les fichiers csv dans un seul et même fichier csv nommé "FVMA_global.csv"
- supprimer dans ce dernier toutes les lignes commençant par "00;" en créant un fichier propre nommé "FVMA_global_<DateDuJour>.csv"
Pour la première étape, pas de souci, j'ai utilisé ce code :
FOR /f %%i in ('dir /B *.csv') do ( IF %%i NEQ FVMA_global.csv type %%i>>FVMA_global.csv )
Ca me produit donc bien un fichier nommé "FVMA_global.csv"
Je ne parvient pas à faire la deuxième partie du traitement. J'imagine qu'il faut utiliser une boucle "for /f" également, mais je ne parviens pas à faire des tests sur les 3 premiers caractères, et à faire en sorte, en fonction de ce test, de mettre le contenu de la ligne parsée dans un nouveau fichier.csv (qui est le fichier final, nettoyé des lignes en "00;"
Un grand merci d'avance pour votre précieuse aide.
A voir également:
- Suppression de certaines lignes dans un fichier texte
- Forcer la suppression d'un fichier - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
voir help findstr