Batch pour récupérer des blocs de texte

Le
moi
Bonjour,

J'ai un fichier texte avec des blocs du style:


-[ 15/12/2010
09:46 ]-
blabla
blabla
Message Label: 10 Block ID: 3 Message Number: S69A
blabla
blabla

-[ 15/12/2010
09:47 ]-
blabla
blabla
Message Label: 15 Block ID: 7 Message Number: 40
blabla
blabla

-[ 15/12/2010
09:46 ]-
blabla
blabla
Message Label: _ Block ID: 4 Message Number: 5Q3
blabla
blabla



J'aimerai pouvoir purger tous les blocs qui ne comportent pas l'info Message
Label: 15
Dans cet exemple, il ne me resterai dans le fichier plus que:
-[ 15/12/2010
09:47 ]-
blabla
blabla
Message Label: 15 Block ID: 7 Message Number: 40
blabla
blabla

Comment faire ?
Merci
Vincent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #22937711
Bonjour,

moi a écrit :
Bonjour,

J'ai un fichier texte avec des blocs du style:


----------------------------------------------------------[ 15/12/2010
09:46 ]-
blabla
blabla
Message Label: 10 Block ID: 3 Message Number: S69A
blabla
blabla

----------------------------------------------------------[ 15/12/2010
09:47 ]-
blabla
blabla
Message Label: 15 Block ID: 7 Message Number: 40
blabla
blabla

----------------------------------------------------------[ 15/12/2010
09:46 ]-
blabla
blabla
Message Label: _ Block ID: 4 Message Number: 5Q3
blabla
blabla



J'aimerai pouvoir purger tous les blocs qui ne comportent pas l'info Message
Label: 15
Dans cet exemple, il ne me resterai dans le fichier plus que:
----------------------------------------------------------[ 15/12/2010
09:47 ]-
blabla
blabla
Message Label: 15 Block ID: 7 Message Number: 40
blabla
blabla

Comment faire ?
Merci
Vincent



Si sur WXP et au-dela, essaye avec ce genre de script (à adapter) :

Rem --- script.cmd ---
@Echo Off

SetLocal ENABLEEXTENSIONS

Set ETAT=0
If Not "!ETAT!"=="0" (
CMD.EXE /VON /C "%CD%script.cmd"
Goto :ENDCMD
)
Set DEST=%CD%Dest.txt
Set FILE=%CD%Le_Fichier_Texte_A_Traiter.txt
Set FILETMP=%CD%Temp.txt

For /F "usebackq tokens=* delims=" %%a In ("%FILE%") Do (
Set ARG=%%a
If !ETAT! EQU 0 (
If "!ARG:~-2!" == "]-" (
Echo !ARG! >"%FILETMP%"
Set ETAT=1
)
) Else (
If "!ARG:~-2!" == "]-" (
If !ETAT! EQU -1 (
For /F "usebackq tokens=* delims=" %%b In ("%FILETMP%") Do (
Echo %%b >>"%DEST%"
)
Echo. >>"%DEST%"
)
Echo !ARG! >"%FILETMP%"
Set ETAT=1
) Else (
Echo !ARG! >>"%FILETMP%"
Echo !ARG! | FindStr /I /C:"Message Label: 15 " >Nul
If Not ERRORLEVEL 1 Set ETAT=-1
)
)
)

:ENDCMD
EndLocal
Rem --- FIN DE script.cmd ---
Publicité
Poster une réponse
Anonyme