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
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 ) ) )
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
)
)
)
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 ) ) )