Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Supprimer une ligne si elle ne contient pas un/plusieurs mot
Auteur Message
Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Bonjour !

Je suis débutant de chez débutants en batch, je voudrais réaliser un petit programme qui supprime les lignes d'un fichier .txt si la ligne en question de contient pas soit un mot, soit un autre.

Un petit exemple.
Considérons le fichier texte .txt suivant:
[18:12:32] Abigail Watson dit: Merci
[18:12:41] Shaqueil King dit: Elle est où Leila ? Et Stevy ?
[18:12:41] Joshua Fischer dit: Le voilà !
[18:12:44] Joshua Fischer dit: A l'accueil.
[18:12:49] Joshua Fischer dit: Elle a rien à faire dans l'poste.
[18:12:51] Shaqueil King dit: Merci Fischer.
[18:12:54] Stevy Redfield lui tend sa main droite.

Je souhaiterais que toutes les lignes ne contenant pas soit le mot Stevy soit le mot Abigail soit supprimée (c'est un .txt de plus de 5000 lignes).

Ce qui donnerait donc:
[18:12:32] Abigail Watson dit: Merci
[18:12:41] Shaqueil King dit: Elle est où Leila ? Et Stevy ?
[18:12:54] Stevy Redfield lui tend sa main droite.

Le mieux serait de supprimer la phrase de Shaqueil, mais là je pense que ce serait trop compliqué

Existe t-il une commande .batch pour correspondre à ce besoin ?

Je vous remercie d'avance,
cordialement,
Garwan50



Dernière édition par Garwan50 le Dim 2 Nov 2014 - 00:06; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Salut, ceci fonctionne chez moi avec ton exemple.
Code:

@echo off
echo LISTE: >output.txt
for /f "tokens=*" %%t in ('findstr /i /C:Stevy /C:Abigail fichier.txt') do (
echo %%t >>output.txt
)
notepad output.txt
pause


Il faudra juste que le fichier s'appelle "fichier.txt".

J'obtiens donc, avec ton exemple,
Citation:

LISTE:
[18:12:32] Abigail Watson dit: Merci
[18:12:41] Shaqueil King dit: Elle est où Leila ? Et Stevy ?
[18:12:54] Stevy Redfield lui tend sa main droite.


Si tu veux supprimer les [heure] dans output.txt exécute ceci ensuite.

Code:

for /f "tokens=1,2 delims=]" %%h in (output.txt) do (
echo %%i >>output2.txt
)


Voilà





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Je comprends pas mais, ça marche lol.

Merci beaucoup!



Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Hugo7 a écrit:

Code:

@echo off
echo LISTE: >output.txt
for /f "tokens=*" %%t in ('findstr /i /C:Stevy /C:Abigail fichier.txt') do (
echo %%t >>output.txt
)
notepad output.txt
pause



De rien ^^, mais c'est très simple (moi aussi j'ai longtemps galéré avec FOR) Wink
"/f" sert à pouvoir écrire "in (' commande ') " dans l'ensemble, et si tu met des ' c'est pour indiquer à la console que la variable %%t doit être définie par rapport aux résultats, ligne par ligne, au
Code:

findstr /i /C:Stevy /C:Abigail fichier.txt

qui cherche dans fichier.txt les chaînes "Stevyy" OU "Abigail" sans prendre compte de la casse grâce au "/i".
Cette commande retourne à FOR chaque ligne trouvée, le résultat, quoi.
"echo %%t >>output.txt" écrit le contenu de la variable dans le txt, et ça retourne en boucle en écrivant dans output.txt chaque résultat de findstr.
ça tourne en boucle jusqu'à ce qu'il n'y ait plus de résultat.

Désolé je suis pas doué en explications, "for /?" non plus Mr. Green

Pense à éditer le titre du topic en ajoutant [Résolu], et à te présenter Wink




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Merci pour les explications, c'est plus clair!
C'est vrai que For c'est le plus compliqué du batch lol, mais c'est bien pratique !



Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
Super! Okay
Moi j'aurai fait pareil Mr. Green



Répondre en citant
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 
^^ il y a des tutos sur ce forum, j'ai appris le batch avec ce forum et
Code:
 commande /?
où on adapte "commande" par la commande qu'on veut apprendre Very Happy




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Message Supprimer une ligne si elle ne contient pas un/plusieurs mot 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch