more +3 "file.txt" >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul
Lo anterior es rápido y funciona muy bien, con las siguientes limitaciones :
- Los caracteres TAB se convierten en una serie de espacios.
- El número de líneas a preservar debe ser menor que ~ 65535. MÁS se bloqueará, (espere a que se presione una tecla), si se excede el número de línea.
- Todas las líneas finalizarán mediante el retorno de carro y el avance de línea, independientemente de cómo hayan sido formateados en la fuente.
La siguiente solución que utiliza FOR/F con FINDSTR es más robusta, pero es mucho más lenta. A diferencia de una solución FOR/F simple, conserva líneas vacías. Pero como todas las soluciones FOR/F, está limitada a una longitud de línea máxima de un bit menor que 8191 bytes. Nuevamente, todas las líneas terminarán por retorno de carro y avance de línea.
@echo off
setlocal disableDelayedExpsnsion
>"file.txt.new" (
for /f "delims=" %%A in ('findstr /n "^" "file.txt"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*::=!
endlocal
)
)
move /y "file.txt.new" "file.txt" >nul
Si usted tiene mi práctico-excelente JREPL.BAT regex text processing utility, entonces se podría usar lo siguiente para una solución muy robusta y rápida. Esto aún terminará todas las líneas con retorno de carro y salto de línea (\ r \ n), independientemente del formato original.
jrepl "^" "" /k 0 /exc 1:3 /f "test.txt" /o -
Se puede escribir \ n terminaciones de línea en lugar de \ r \ n añadiendo la opción /U
.
Si debe conservar los terminadores de línea originales, puede usar la siguiente variación. Esto carga todo el archivo de origen en una sola variable de JScript, por lo que el tamaño total del archivo está limitado a aproximadamente 1 o 2 gigabytes (olvidé el número exacto).
jrepl "(?:.*\n){1,3}([\s\S]*)" "$1" /m /f "test.txt" /o -
Recuerde que JREPL es un archivo por lotes, por lo que debe utilizar LLAMADA JREPL si utiliza el comando dentro de otro archivo por lotes.
[Ver este enlace] [1]. Espero que funcione para ti. [1]: http://stackoverflow.com/questions/418916/delete-certain-lines-in-a-txt-file-via-a-batch-file –
Arun Jain que sólo funciona si usted sabe lo que está en la línea no lo hago – kriegy