Inserción de líneas en blanco en batch DOS

Resuelto
jopoiss Mensajes publicados 104 Estado Miembro -  
 mimi -
Hola,

Quisiera saber cómo se pueden insertar líneas vacías en un archivo de texto con un *.bat cuando se encuentra una palabra específica.
Es decir, quiero que mi archivo por lotes detecte una palabra específica y, cuando la vea, inserte una línea vacía a continuación. Preciso que la palabra que quiero detectar siempre estará al final de la línea.
Pienso que debería usar un if, pero soy principiante en este tema, así que necesito su ayuda.

Gracias de antemano.
Configuración: Windows XP Opera 9.27

6 respuestas

cchristian Mensajes publicados 928 Estado Miembro 131
 
Hola,

Intenta esto, ¡espero que corresponda a tus expectativas!
Para activar el batch, introduces su nombre en el símbolo del sistema seguido de la cadena de caracteres a localizar.

 @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 El %DATE% a %TIME% ECHO _________________________________________________ ECHO. TITLE %0 BÚSQUEDA DE CADENAS DE CARACTERES E INSERCIÓN DE LÍNEAS BLANCAS CD C:\Documents and Settings\christian\Mis Documentos\BATCH_files rem archivo de entrada que contiene el texto a analizar. SET "testIN_txt=%USERNAME%-testIN.txt" rem archivos intermedios de trabajo 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 Numeración de las líneas de texto del archivo en INPUT copiado. 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 -Búsqueda en el archivo de la cadena de caracteres a localizar 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!# línea blanca a insertar >> %testINT_txt% ) rem -Ordenamiento de las líneas del archivo intermedio para fusionarlas. SORT /+1 /M 1024 /REC 256 %testINT_txt% /O %testINTB_txt% rem Deliberadamente no he recreado el archivo original testIN_txt por rem precaución, depende de ti decidir. ERASE /A %testINT_txt% rem -Eliminación de la parte genérica de cada línea (numeración rem y delimitador #) del nuevo archivo. FOR /F "tokens=2,3* delims=#" %%i in ( %testINTB_txt% ) DO ( rem visualización en pantalla para prueba ECHO %%i%%j %testINT_txt% ECHO %%i%%j >> %testINT_txt% )


--
Atentamente.

Cchristian.
2
jopoiss Mensajes publicados 104 Estado Miembro 17
 
Re, ¿nadie puede ayudarme?
0
jopoiss Mensajes publicados 104 Estado Miembro 17
 
Está bien, lo he encontrado por mi cuenta con un if involucrado en un for.
Pero gracias de todas formas por haber prestado atención a mi problema.
Buen día.
0
cchristian Mensajes publicados 928 Estado Miembro 131
 
Gracias por la respuesta. ¿Puedes publicar tu solución?
--
Cordialmente.

Cchristian.
0
jopoiss Mensajes publicados 104 Estado Miembro 17
 
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

Voilà. Bonne journée.
0
mimi
 
Hola,
¿Puedes comentar tus líneas, por favor?
Gracias de antemano.
0
cchristian Mensajes publicados 928 Estado Miembro 131
 
Buenas noches,

Gracias, es demasiado para mí, no entendí,
--
Atentamente.

Cchristian.
0