Extraire lignes contenant mots clé (.txt.)
Résolu
Mael730
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
Mael730 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Mael730 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en script, voici mon problème:
J'ai un dossier avec une arborescence assez complexe contenant bcp de fichiers .txt. J'aimerai extraire les lignes contenant le mot clé "FIN" de ces fichiers texte puis exporter tout ces nouveaux fichiers texte dans un seul dossier.
C'est faisable en Perl?? (sinon en batch??)
merci d'avance
Je débute en script, voici mon problème:
J'ai un dossier avec une arborescence assez complexe contenant bcp de fichiers .txt. J'aimerai extraire les lignes contenant le mot clé "FIN" de ces fichiers texte puis exporter tout ces nouveaux fichiers texte dans un seul dossier.
C'est faisable en Perl?? (sinon en batch??)
merci d'avance
A voir également:
- Excel extraire ligne contenant mot
- Aller à la ligne excel - Guide
- Extraire une video youtube - Guide
- Liste déroulante excel - Guide
- Partager photos en ligne - Guide
- Trousseau mot de passe iphone - Guide
11 réponses
hello
copie, dans le dossier \mon dossier, tous les fichiers .txt dans l'arborescence qui contiennent le mot FIN
tu peux mettre echo devant le copy pour voir ce qu'il va faire, sans copier
copie, dans le dossier \mon dossier, tous les fichiers .txt dans l'arborescence qui contiennent le mot FIN
tu peux mettre echo devant le copy pour voir ce qu'il va faire, sans copier
@echo off set dossier="\mon dossier" for /f "delims=" %%a in ('dir /b/s *.txt') do ( for /F "delims=" %%b in ('findstr /M "FIN" "%%a"') do copy "%%b" %dossier% )
Slt,
Les fichiers .txt sont recopiés à l'identique avec toutes leurs lignes, les lignes contenant le mot FIN ne sont pas extraites.
Ta syntaxe me semble OK, je ne voie pas ce qu'il ne vas pas?? il doit y avoir un problème dans la sous-boucle for?
Les fichiers .txt sont recopiés à l'identique avec toutes leurs lignes, les lignes contenant le mot FIN ne sont pas extraites.
Ta syntaxe me semble OK, je ne voie pas ce qu'il ne vas pas?? il doit y avoir un problème dans la sous-boucle for?
quelle est ta question, copier les fichiers contenant FIN en entier ou extraire juste les lignes contenant FIN et mettre ces lignes dans un seul fichier ?
Dsl je me suis mal exprimé, il faut que j'extraie toutes les lignes contenant le mot FIN. En gros il faut supprimer toutes les lignes ne contenant pas le mot FIN dans un fichier.txt et ceci fichier par fichier dans toute l'arborescence!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voici une ébauche de mon fichier txt
J'ai ceci:
15/01/2009 08:49 0 00:00:00 06-01825CEA04 0 PAU 3.335 -0.002
15/01/2009 08:50 30.661 00:00:30 06-01825CEA04 0 PAU 3.335 0.001
15/01/2009 08:50 36.471 00:00:03 06-01825CEA04 0 DEB_CHA I5 3.335 -0.003
15/01/2009 08:50 39.96 00:00:06 06-01825CEA04 0 CHA I5 3.369 2.028
15/01/2009 08:50 80.646 00:00:47 06-01825CEA04 0 CHA I5 3.401 2.032
15/01/2009 08:51 131.14 00:01:37 06-01825CEA04 0 CHA I5 3.436 2.025
15/01/2009 08:52 161.843 00:02:08 06-01825CEA04 0 CHA I5 3.469 2.024
15/01/2009 08:52 183.346 00:02:30 06-01825CEA04 0 CHA I5 3.506 2.033
15/01/2009 08:52 203.889 00:02:50 06-01825CEA04 0 CHA I5 3.557 2.033
15/01/2009 08:53 214.5 00:03:01 06-01825CEA04 0 CHA I5 3.591 2.026
15/01/2009 08:53 225.389 00:03:12 06-01825CEA04 0 CHA I5 3.631 2.025
15/01/2009 08:53 236.985 00:03:23 06-01825CEA04 0 CHA I5 3.677 2.028
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 CHA I5 3.723 2.034
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 FIN_CHA I5 3.723 2.034
15/01/2009 08:53 248.061 00:00:00 06-01825CEA04 0 DEB_CHA I20 3.726 2.034
15/01/2009 08:53 252.577 00:00:05 06-01825CEA04 0 CHA I20 3.713 0.529
15/01/2009 08:53 254.077 00:00:06 06-01825CEA04 0 FIN_CHA I20 3.694 0.523
15/01/2009 08:53 256.093 00:00:08 06-01825CEA04 0 CHA I20 3.656 -0.002
15/01/2009 08:53 258.585 00:00:00 06-01825CEA04 0 DEB_DCH I10 3.624 -0.005
15/01/2009 08:53 259.591 00:00:01 06-01825CEA04 0 DCH I10 3.612 -0.016
15/01/2009 08:53 260.589 00:00:02 06-01825CEA04 0 DEB_DCH I10 3.602 -0.011
et je voudrai ceci créer un autre fichier txt ayant le mem nom contenant ceci:
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 FIN_CHA I5 3.723 2.034
15/01/2009 08:53 254.077 00:00:06 06-01825CEA04 0 FIN_CHA I20 3.694 0.523
J'ai ceci:
15/01/2009 08:49 0 00:00:00 06-01825CEA04 0 PAU 3.335 -0.002
15/01/2009 08:50 30.661 00:00:30 06-01825CEA04 0 PAU 3.335 0.001
15/01/2009 08:50 36.471 00:00:03 06-01825CEA04 0 DEB_CHA I5 3.335 -0.003
15/01/2009 08:50 39.96 00:00:06 06-01825CEA04 0 CHA I5 3.369 2.028
15/01/2009 08:50 80.646 00:00:47 06-01825CEA04 0 CHA I5 3.401 2.032
15/01/2009 08:51 131.14 00:01:37 06-01825CEA04 0 CHA I5 3.436 2.025
15/01/2009 08:52 161.843 00:02:08 06-01825CEA04 0 CHA I5 3.469 2.024
15/01/2009 08:52 183.346 00:02:30 06-01825CEA04 0 CHA I5 3.506 2.033
15/01/2009 08:52 203.889 00:02:50 06-01825CEA04 0 CHA I5 3.557 2.033
15/01/2009 08:53 214.5 00:03:01 06-01825CEA04 0 CHA I5 3.591 2.026
15/01/2009 08:53 225.389 00:03:12 06-01825CEA04 0 CHA I5 3.631 2.025
15/01/2009 08:53 236.985 00:03:23 06-01825CEA04 0 CHA I5 3.677 2.028
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 CHA I5 3.723 2.034
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 FIN_CHA I5 3.723 2.034
15/01/2009 08:53 248.061 00:00:00 06-01825CEA04 0 DEB_CHA I20 3.726 2.034
15/01/2009 08:53 252.577 00:00:05 06-01825CEA04 0 CHA I20 3.713 0.529
15/01/2009 08:53 254.077 00:00:06 06-01825CEA04 0 FIN_CHA I20 3.694 0.523
15/01/2009 08:53 256.093 00:00:08 06-01825CEA04 0 CHA I20 3.656 -0.002
15/01/2009 08:53 258.585 00:00:00 06-01825CEA04 0 DEB_DCH I10 3.624 -0.005
15/01/2009 08:53 259.591 00:00:01 06-01825CEA04 0 DCH I10 3.612 -0.016
15/01/2009 08:53 260.589 00:00:02 06-01825CEA04 0 DEB_DCH I10 3.602 -0.011
et je voudrai ceci créer un autre fichier txt ayant le mem nom contenant ceci:
15/01/2009 08:53 247.499 00:03:34 06-01825CEA04 0 FIN_CHA I5 3.723 2.034
15/01/2009 08:53 254.077 00:00:06 06-01825CEA04 0 FIN_CHA I20 3.694 0.523
comme ca
@echo off for /f "delims=" %%a in ('dir /b/s *.txt') do findstr "FIN" "%%a" >> resultat.txt
Merci ça marche!
Autre question:
Est-il possible d'écrire un fichier résultat par dossier où le script agit?? (a la place d'avoir un seul fichier résultat on en aurai plusieurs mais reparti dans chaque repertoire).
Un truc du genre:
for /f "delims=" %%a in ('dir /b/s *.txt') do findstr "FIN" "%%a" >> 'dir /b/s resultat.txt'
Autre question:
Est-il possible d'écrire un fichier résultat par dossier où le script agit?? (a la place d'avoir un seul fichier résultat on en aurai plusieurs mais reparti dans chaque repertoire).
Un truc du genre:
for /f "delims=" %%a in ('dir /b/s *.txt') do findstr "FIN" "%%a" >> 'dir /b/s resultat.txt'
dans la boucle for, %%a est le nom de chaque fichier .txt
set D=%%~pa assigne à D le nom du chemin dans lequel se trouve le fichier %%a
!D!\resultat.txt va écrire resultat dans chaque dossier, D est entre ! parce qu'on est dans une boucle
set D=%%~pa assigne à D le nom du chemin dans lequel se trouve le fichier %%a
!D!\resultat.txt va écrire resultat dans chaque dossier, D est entre ! parce qu'on est dans une boucle
@echo off setlocal enableDelayedExpansion for /f "delims=" %%a in ('dir /b/s *.txt') do ( set D=%%~pa findstr "FIN" "%%a" >> "!D!\resultat.txt" )
Merci ça fonctionne impeccable!
Tu crois qu'il serai possible que le fichier resultat.txt créé dans chaque dossier porte le nom des fichiers qu'il concaténe?
Pour l'instant j'ai ceci:
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_1-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_10-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_11-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_12-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_7-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_8-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_9-7-2009.txt
resultat.txt
Et il me faudrai cela:
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_1-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_10-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_11-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_12-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_7-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_8-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_9-7-2009.txt
resultat,Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2.txt
En gros le fichier résultat porterai le nom d'un des fichiers .txt sans la date!
La finalité de ceci est que j'ai un script qui scanne mon arborescence a la recherche de fichiers resultat*.txt et qui me les copie dans un dossier <=> le script centralise mes résultats dans un seul dossier, il me faut donc pouvoir les identifier <=> il faut des noms différents aux fichiers résultats.
une idée??
Tu crois qu'il serai possible que le fichier resultat.txt créé dans chaque dossier porte le nom des fichiers qu'il concaténe?
Pour l'instant j'ai ceci:
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_1-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_10-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_11-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_12-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_7-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_8-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_9-7-2009.txt
resultat.txt
Et il me faudrai cela:
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_1-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_10-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_11-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_12-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_7-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_8-7-2009.txt
Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2_9-7-2009.txt
resultat,Cyclage acc‚l‚r‚ Nø3 2 Elts … 20øC_06-01825CEA07-CEA04 Voie2.txt
En gros le fichier résultat porterai le nom d'un des fichiers .txt sans la date!
La finalité de ceci est que j'ai un script qui scanne mon arborescence a la recherche de fichiers resultat*.txt et qui me les copie dans un dossier <=> le script centralise mes résultats dans un seul dossier, il me faut donc pouvoir les identifier <=> il faut des noms différents aux fichiers résultats.
une idée??
essaye ce script
j'ai mis un echo et le findstr en commentaire, il ne va rien exécuter, seulement afficher le nom du fichier
j'ai mis un echo et le findstr en commentaire, il ne va rien exécuter, seulement afficher le nom du fichier
setlocal enableDelayedExpansion for /f "delims=" %%a in ('dir /b/s *.txt') do ( set D=%%~pa set nom=%%~na for /f "delims=_ tokens=1-2" %%b in ('echo !nom!') do ( echo "!D!resultat,%%b%%c.txt" rem findstr "FIN" "%%a" >> "!D!resultat,%%b%%c.txt" ) )