Extraire des emails d'un .csv
jee pee Messages postés 40166 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 septembre 2024 - 9 avril 2024 à 18:34
- Extraire des emails d'un .csv
- Extraire une video youtube - Guide
- Extraire son video - Guide
- Extraire image pdf - Guide
- Extraire fichier rar - Guide
- Comment creer un compte email - Guide
7 réponses
8 avril 2024 à 00:17
ou on peut extraire les comptes mails dans un premier fichier, et supprimer les caractères de fin de ligne CRLF pour obtenir une seule ligne concaténée dans un second fichier
FOR /F "tokens=1,2,3,4,5,6,7* delims=; " %%i in ('type cptes.txt') do echo %%n@trucmail.com; >> mail1.txt FOR /F %%h in ('type mail1.txt') do (>>mail2.txt <nul set /p unused=%%h)
Modifié le 7 avril 2024 à 23:52
Bonjour,
Avec cptes.txt
1;2;3;4;5;jean.dupond;7;8;9
a;b;c;d;e;marie.durand;g;h;i
et un cptes.cmd
SETLOCAL EnableDelayedExpansion set MAIL= FOR /F "tokens=1,2,3,4,5,6,7* delims=; " %%i in ('type cptes.txt') do set MAIL=!MAIL!%%n@trucmail.com; echo %MAIL% >mail.txt
on obtient mail.txt
jean.dupond@trucmail.com;marie.durand@trucmail.com;
les limites, il faut que tous les utilisateurs soient sur le même serveur de messagerie trucmail.com, et je ne sais pas quelle est la taille maxi d'une variable
edit : la taille maxi d'une ligne et du contenu d'une variable est de 8191 dans l'invite de commande
9 avril 2024 à 18:07
Le caractère TAB(ulation) est un concept pas toujours facile à appréhender ;-) Avec TAB en séparateur cela fonctionne bien. Sauf s'il existe des colonnes vides, cette commande de script ne sait pas gérer cela. Il faudrait passer par un langage de programmation comme Python.
Ou plus simple, prendre le fichier .csv sous Excel et ne garder que la colonne des email et traiter alors la colonne 1 de ce fichier.
9 avril 2024 à 18:31
ok je vois. plus compliqué que prévu en fait. je n'ai pas de mail dans mon export .csv mais uniquement les identifiants qui composent le mail. Pas bien grave c'est peu probable que les cellules avant la colonne H (identifiant) soit vides.
9 avril 2024 à 18:34
sous Excel et ne garder que la colonne des identifiants
9 avril 2024 à 15:44
merci pour ces propositions. Elles sont satisfaisantes et je commence à voir ce qu'il est possible de faire. Il me reste des pb. selon le contenu de certaines cellules (nom composé ou cellule vide) cela semble coincé et le mail généré est faux car il ne récupère pas la bonne colonne.
voici par exemple ce que contient mon fichier export.csv
numero Ident Type Nom Prénom Identifiant 567489 47569 Élève DUPOND jean jean.dupondoni 345698 56788 Élève SAID MOSSA abib abib.saidmossa
si j'applique le premier script il me mettra abib@trucmail.com et non pas abib.saidmossa@trucmail.com car il va chercher la valeur dans la colonne E au lieu de la colonne F à cause de la présence d'un espace entre said et mossa.
autre pb avec la deuxieme solution de script (création de mail1.txt et mail2.txt).
Ici c'est ok au niveau de la récupération de la colonne F si le nom ou prenom comporte un espace. Par contre si j'ai une cellule vide sur une ligne alors le script saute d'une cellule. Par exemple si la celule B56 est vide alors il va générer un mail à partir de la cellule G56 au lieu de F56. Et si les cellule B56 et C56 sont vides alors il décale encore de 2 cellules et va chercher la cellule H !! Incomprehesible mais une chose est sure les cellule vides pose pb et donc certains mails sont faux.
Comment etre certain que le mail sera bien géréné uniquement à partir de la colonne F (identifiant sous la forme prenom.nom) quelque soit la forme du nom /prenom, avec ou sans espace ou autre caractère spéciaux, et qu'il y ait oiu non une cellule vide ?
Modifié le 9 avril 2024 à 16:07
normalement un fichier csv a un séparateur de colonne ; (ou virgule en anglais), là c'est un blanc ou une tabulation ?
on ne peut pas utiliser le blanc puisqu'il peut être contenu dans une colonne, donc il faut que ce soit une tabulation. Avec ton fichier, et une tabulation entre les colonnes avec :
FOR /F "tokens=6 skip=1 delims= " %%i in ('type cptes.txt') do (>>mail3.txt <nul set /p unused=%%i@trucmail.com;)
delims= " entre = et ", ce n'est pas un blanc mais une tabulation, on obtient bien
jean.dupondoni@trucmail.com;abib.saidmossa@trucmail.com;
le skip=1 permettant de sauter la première ligne
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question9 avril 2024 à 16:23
non cela me donne un truc sous cette forme %n@trucmail.com; si je met un espace entre = et ". Je crois que le ; cest la bonne delimitation de mes cellules mais avec une cellule vide cela doit surement mettre ;; et donc ca décale tout
9 avril 2024 à 16:30
voici le seul script qui me donne quelque chose de cohérent sauf pour les cases vide qui va décaler la colonne vers la droite d'autant de cases vides et donc ne prendra pas en compte la colonne voulue (F).
@echo off setlocal FOR /F "tokens=1-6 skip=1 delims=;" %%i in ('type export.csv') do echo %%n@trucmail.com; >>mail1.txt
9 avril 2024 à 18:26
je confirme. en ouvrant mon csv avec notepad++ je vois bien, lorsque la cellule est vide, un double point virgule. donc pour solutionner le probleme de décalage de colonne il faudrait peut etre indiquer une commande à exécuter quand il y a ;; comme ajouter une lettre ou un espace entre les 2
comment faire en sorte que le script ne squeeze pas les ;; et identifie bien 2 point virgule distinct à comptabiliser dans la commande tokens=6 ?
script 1 pour lister un mail par ligne
FOR /F "tokens=6 skip=1 delims=;" %%i in ('type export.csv') do echo %%i@trucmail.com;>>mail1.txt
script 2 pour lister les mails à la suite
FOR /F "tokens=6 skip=1 delims=;" %%i in ('type export.csv') do (>>mail3.txt <nul set /p unused=%%i@trucmail.com;)
9 avril 2024 à 18:30
dans notepad++ remplacer ;; par ; ;
Modifié le 8 avril 2024 à 00:27
et en mixant les 2 commandes