Bonjour,
Essaie cela, ça doit correspondre à ton attente, je l'espère du moins !
Pour activer le batch tu saisis son nom dans l'invite de commandes suivi de la chaîne de caractères à localiser.
@SETLOCAL ENABLEDELAYEDEXPANSION
MODE CON COLS=150 LINES=90
ECHO OFF
CLS
ECHO.
ECHO.
ECHO %0.
ECHO.
FOR /L %%I IN (3,-1,0) DO @echo.
ECHO _________________________________________________
ECHO.
ECHO %0 %1 %2 Le %DATE% à %TIME%
ECHO _________________________________________________
ECHO.
TITLE %0 RCHERCHE CHAINE DE CARACTERES ET INSERTION DE LIGNES BLANCHES
CD C:\Documents and Settings\christian\Mes Documents\BATCH_files
rem fichier en entrée contenant le texte à analyser.
SET "testIN_txt=%USERNAME%-testIN.txt"
rem fichiers intermédiaires de travail
SET "testINT_txt=%USERNAME%-testINT.txt"
SET "testINTB_txt=%USERNAME%-testINTB.txt"
IF EXIST %testINT_txt% ( ERASE /A %testINT_txt%)
IF EXIST %testINTB_txt% ( ERASE /A %testINTB_txt%)
rem Numérotage des lignes de texte du fichier en INPUT recopié.
SET /A "calcul=10001"
FOR /F "tokens=1-1* delims=$" %%I in ( %testIN_txt% ) DO (
ECHO !calcul!#%%I >> %testINT_txt%
SET /A "calcul=calcul+10" )
rem -Recherche dans le fichier la chaine de caractères à localiser
SET "loc_chaine=%1"
FOR /F "tokens=1,1 delims=:#" %%I IN (
' TYPE %testINT_txt% ^| FINDSTR /I %loc_chaine%' ) DO (
SET /A "calcul=%%I+1"
ECHO !calcul!# ligne blanche a inserer >> %testINT_txt% )
rem -Tri des lignes du fichier intermédiaire afin de les fusionner.
SORT /+1 /M 1024 /REC 256 %testINT_txt% /O %testINTB_txt%
rem Je n'ai délibérément pas recréer le fichier d'origine testIN_txt par
rem précaution à toi de voir !
ERASE /A %testINT_txt%
rem -Elimination de la partie générique de chaque ligne (numérotation
rem et délimiteur #) du nouveau fichier.
FOR /F "tokens=2,3* delims=#" %%i in ( %testINTB_txt% ) DO (
rem affichage à l'écran pour test ECHO %%i%%j %testINT_txt%
ECHO %%i%%j >> %testINT_txt% )
Cordialement.
Cchristian.