Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: patorejo en 10 Agosto 2010, 09:06 am



Título: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: patorejo en 10 Agosto 2010, 09:06 am
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"


Código:
@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


Título: Re: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: flony en 10 Agosto 2010, 14:00 pm
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:
Código:
@echo off
find /i "valido" "texto.txt"
if %errorlevel%==0 (echo exicte) else (echo noexicte)
pause


Título: Re: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: maxx93 en 10 Agosto 2010, 21:25 pm
Para buscar una palabra en la ultima linea podes hacer esto....

Código
  1. @echo off
  2. for /f "delims=" %%a in ('type "texto.txt"') do (echo %%a>"temporal.txt")
  3. find /i "valido" "temporal.txt">nul
  4. if %errorlevel%==0 (echo Encontrado) else (echo No encontrado)
  5. del "temporal.txt"
  6. pause>nul
  7.  

Pero si en la ultima linea solo dice la palabra valido puedes hacer esto...
Código
  1. @echo off
  2. for /f "delims=" %%a in ('type "texto.txt"') do (set ultimalinea=%%a)
  3. if %ultimalinea%==valido (echo Encontrado) else (echo No encontrado)
  4. pause>nul
  5.  
Salu2.


Título: Re: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: patorejo en 12 Agosto 2010, 02:55 am
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
 
Código:
@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


Título: Re: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: leogtz en 12 Agosto 2010, 05:08 am
http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html (http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html)


Título: Re: como buscar una palabra en la ultima linea de un txt con un bat
Publicado por: flony en 13 Agosto 2010, 21:52 pm
a ver lo que vi es que tenes 2 txt uno dice
detalle.txt
Citar
codigo:255
registro:2333
nombre pc:25555
ip:192.168.12.1
el otro es ips.txt
Citar
125.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
Código:
@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
Citar
125.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
Citar
codigo: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
Código:
@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
Citar
125.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