Inserstion lignes vides en batch dos

Résolu/Fermé
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 - 5 juin 2008 à 09:57
 mimi - 10 nov. 2016 à 16:26
Bonjour,

J'aimerais savoir comment on peut inserer des lignes vides dans un fichier texte avec un *.bat lorsque l'on voit un mot précis.
C'est à dire que je veux que mon batch detecte un mot précis, et que lorsqu'il le voit il insere une ligne vide à la suite. Je précises que le mot que je veux detecté sera toujours en fin de ligne.
Je pense qu'il faudrait utiliser un if mais je suis débutant dans ce domaine alors j'ai besoin votre aide.

Merci d'avance.

6 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
6 juin 2008 à 12:20
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% )




2
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 16
6 juin 2008 à 09:25
Re, personne ne peut m'aider?
0
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 16
6 juin 2008 à 13:45
C'est bon j'ai trouvé de moi même avec un if impliqué dans un for.
Mais merci quand même de t'être penché sur mon problème.
Bonne journée.
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
6 juin 2008 à 18:15
Merci pour le retour. Peux-tu poster ta solution ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jopoiss Messages postés 104 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 7 janvier 2011 16
7 juin 2008 à 14:10
FOR /f "tokens=1-10" %%a IN (temp4.txt) DO (
if %%e EQU in ( echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j
echo.
echo. ) else ( echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j )
) >> "ACL switch L3 modifi‚ prˆt.txt"
erase temp4.txt

Voila. Bonne journée.
0
Bonjour,
Peux-tu commenter tes lignes stp?
Merci d'avance
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
7 juin 2008 à 23:47
Bonsoir,

Merci, c'est trop fort pour moi, je n'ai pas compris,
0