como buscar una palabra en la ultima linea de un txt con un bat

Iniciado por patorejo, 10 Agosto 2010, 09:06 AM

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

patorejo

como podria buscar en un archivo de txt,una palabra pero buscar solo en la ultima linea.

estaba buscando con este codigo pero el problema es q solo sirve para buscar la palabra en todo el archivo ,yo solo quiero q pregunte si la ultima linea del txt es igual a "valido" entonces ir a valido,y si es diferente entonces ir a "no valido"


@echo off
:INICIO
find /i "valido" "texto.txt"
if %errorlevel%==0 (goto VALIDO) else (goto NOVALIDO)

:valido
echo PALABRA ENCONTRADA
pause > null


:novalido
echo PALABRA no ENCONTRADA



creo que tendria que recorrer el txt y guardar el numero de lineas de codigo en una variable,estoy algo perdido en bat,alguien q conozca del tema le agradeceria la ayuda

ahh me olvidaba el texto que quiero recorrer es un log de un programa,por lo cual se esta actualizando cada segundo

flony

#1
el tema de la ultima linea lo busco se q leo en su tuto sobre txt lo tiene...eso si creo es estatico el log...me fijo bien pero a primera vista en tu codigo yo lo pondria asi...eso si despues que descubra como meter la ultima fila  ;D  :rolleyes:
@echo off
find /i "valido" "texto.txt"
if %errorlevel%==0 (echo exicte) else (echo noexicte)
pause

si un problema no tiene solucion entonces no es un problema...es algo inevitable

maxx93

#2
Para buscar una palabra en la ultima linea podes hacer esto....

Código (dos) [Seleccionar]

@echo off
for /f "delims=" %%a in ('type "texto.txt"') do (echo %%a>"temporal.txt")
find /i "valido" "temporal.txt">nul
if %errorlevel%==0 (echo Encontrado) else (echo No encontrado)
del "temporal.txt"
pause>nul


Pero si en la ultima linea solo dice la palabra valido puedes hacer esto...
Código (dos) [Seleccionar]

@echo off
for /f "delims=" %%a in ('type "texto.txt"') do (set ultimalinea=%%a)
if %ultimalinea%==valido (echo Encontrado) else (echo No encontrado)
pause>nul

Salu2.

patorejo

#3
oye muchas gracias funciona perfecto,ahora tengo otra duda,mira si por ejemplo encuentro la palabra q buscada entonces se realiza un proceso,que consiste en modificar una linea de otro txt

como haria en cambio para modificar una linea de un txt por otra

@echo off
inicio:
for /f "delims=" %%a in ('type "texto.txt"') do (echo %%a>"temporal.txt")
find /i "valido" "temporal.txt">nul
if %errorlevel%==0 (goto Encontrado) else (goto inicio:)


encontrado:
find /i "ip" "modificar.txt"
if %errorlevel%==0 ("AQUI como reemplazo la  palabra que encontre por otro ")
pause>nul


por ejemplo en el txt que quiero reemplazar existe una linea que contiene una palabra por decir "ip=192.168.0.1"  como hago para cambiar esa ip de ese txt por otra ,estaba pensando en buscar esa linea y modificarla.

pero me di cuenta que  del dicho al hecho ay mucho trecho y ay es donde vengo a pedirle ayuda a los expertos

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

flony

#5
a ver lo que vi es que tenes 2 txt uno dice
detalle.txt
Citarcodigo:255
registro:2333
nombre pc:25555
ip:192.168.12.1
el otro es ips.txt
Citar125.251.32.1
145.21.23.5
147.28.6.2
123.214.36.4
125.253.24.26
12.36.25.58
89.25.41.65
41.25.36.41
bue una forma y aclaro no la unica  ;) seria @echo off
(
echo 4,4,1M
echo e
) | edlin /b detalle.txt

<"detalle.txt" set /p "ip="
set "ip"

set copiar=%ip:~3%
echo %copiar%>>ips.txt
del /f detalle.txt
del /f detalle.bak

resultado en ips.txt con el primer code
Citar125.251.32.1
145.21.23.5
147.28.6.2
123.214.36.4
125.253.24.26
12.36.25.58
89.25.41.65
41.25.36.41

192.168.12.1
el problemita que tiene es q si se va actualizando el detalle.txt no se como terminaria el ultimo renglon...jijiji ya me pongo a ver seria con for y find para q busque en cada renglon donde haya la palabra ip extraiga el caracter y lo copie a ips.txt...lo hago y modifico el mensaje
editado
mira con un detalle.txt
Citarcodigo:255
registro:2333
nombre pc:25555
ip:192.168.12.1
codigo:255
registro:2333
nombre pc:25555
ip:192.168.12.2
codigo:255
registro:2333
nombre pc:25555
ip:192.168.12.3
y un code @echo off
for /f %%a in ('FIND /I "ip" detalle.txt') do (echo %%a>>ips.txt)

sale esto... :silbar: ya se tiene los string ip:...pero no se como sacarlos dentro del for...algo se me va a ocurrir ;D
Citar125.251.32.1
145.21.23.5
147.28.6.2
123.214.36.4
125.253.24.26
12.36.25.58
89.25.41.65
41.25.36.41

----------
ip:192.168.12.1
ip:192.168.12.2
ip:192.168.12.3
si un problema no tiene solucion entonces no es un problema...es algo inevitable