Bat leer palabras texto

Iniciado por fabianjanu, 10 Septiembre 2012, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

fabianjanu

buenos dias, soy nuevo en el mundo del bat y estoy necesitando de un bat que leea un texto "Ejemplo.txt" y me devuelva en otro texto "encontrado.txt" las lineas que contengan ciertas palabras. pero tambien las ultimas 5 lineas a esta linea inclusive.

ejemplo:


Nombre: Pepe
Edad: 32
Altura: 1.8
Peso: 75


Nombre: Jose
Edad: 20
Altura: 1.9
Peso: 75

Nombre: Juan
Edad: 340
Altura: 1.7
Peso: 85



aca deberia devolver todos las personas que tengan 75 KG.

al momento pude hacer que devuelva: "Peso:75" con :

type log.txt | find /i "Peso: 75"

pero necesito tambien las 3 lineas anteriores al peso para saber los demas datos.

es posible?


Eleкtro

#1
Trabajar con números no es una taréa agradable en Batch (No por dificil, sino por primitivo e ineficaz si no se hace al detalle... Bueno, eso lo hace más dificil supongo xD)... el code que he echo creo que ha quedado eficiente y sin errores, pero habría sido mejor codearlo en un lenguaje decente.

Código (dos) [Seleccionar]
@Echo OFF


REM               [PARÁMETROS]
REM                KG ARCHIVO
Call :ElHacker.net 75 test.txt
Pause
Exit


:ElHacker.net
Setlocal enabledelayedexpansion

REM Eliminamos las lineas en blanco del archivo...
Type "%~2" | FINDSTR /I "[a-z]" > "%TEMP%\%~2"

Echo+
Echo: [ Peso: %~1 ] - Resultados: | MORE
ECHO:________________________________________________________________________________
For /F "Delims=:" %%X in ('findstr /I /N "Peso..%~1" "%TEMP%\%~2"') do (
Title Peso: %~1
Set /A "LINE=0"
Set /A "LAST=%%X+1"
Set /A "FIRST=!LAST!-4"
FOR /F "Tokens=*" %%# in ('Type "%~2"') do (
Set /A "LINE+=1"
IF NOT "!LINE!" EQU "!LAST!" (
IF "!LINE!" EQU "!FIRST!" (
Set /A FIRST+=1
ECHO %%#
)
)
)
ECHO:________________________________________________________________________________
)
Setlocal disabledelayedexpansion
Goto :EOF


Test.txt

Nombre: Pepe
Edad: 32
Altura: 1.8
Peso: 75

Nombre: paco
Edad: 11
Altura: 2,9
Peso: 95+

Nombre: cheguevara
Edad: 99
Altura: 7,9
Peso: 95
Nombre: chrisss
Edad: 1000
Altura: 2,19
Peso: 75


Output:



Saludos