Ayuda - Extraer un texto de un .txt [Batch]

Iniciado por eXoRTH, 13 Noviembre 2011, 02:48 AM

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

eXoRTH

Buenas noches.
Bueno, les cuento el problema que estoy teniendo.
Estoy haciendo un batch para bloquear páginas de internet desde el archivo HOSTS..
El .bat funciona perfecto pero le quise agregar una opción, la cual es que el usuario pueda desbloquear una página escribiendo el nombre de la misma..
Con la función Find /I /N me aparece el número de línea y el nombre de la pagina que quiero eliminar y lo guardo en un .txt
Pero me sale de la siguiente forma:



---------- C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS
[22]255.255.255.0       www.pagina.com


Yo solo quiero extraer el 22 que es el número de línea (para después poder eliminar la línea con el EDLIN) y no pude conseguirlo...
intente con un For tokens y nada...

Busqué en el foro, leí el post creado por Leo Gutiérrez y la verdad que me sirvió de mucho pero no puedo con esto.
¿Me ayudarían por favor?
Desde ya, muchas gracias.
Quedarse en lo conocido por miedo a lo desconocido, equivale a mantenerse vivo pero no vivir.

leogtz

Archivo:

---------- C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS
[22]255.255.255.0       www.pagina.com


Código (bash) [Seleccionar]
@echo off
for /f "delims=[ tokens=1" %%a in ('type "file.txt" ^| findstr /r "^\["') do (
for /f "tokens=1 delims=]" %%b in ("%%a") do (
echo Línea: %%b
)
)


Resultado:

C:\Users\leo\batch>code.cmd
LÝnea: 22

C:\Users\leo\batch>
Código (perl) [Seleccionar]

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

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

eXoRTH

set /p pgi=Escriba la Pagina que desea Desbloquear:
echo.
echo.
type "%file%" | findstr /i "%pgi%$" >nul && (
cd.>"%file%.bak"
type "%file%" | findstr /i /v "%pgi%$">"%file%.bak"
del /f/q/a "%file%" >nul
ren "%file%.bak" "hosts" >nul


Lo pude solucionar de esa forma Leo.
¿Estaría bien así?
Muchas gracias por el code que pusiste, ahora si lo entendí perfecto.
Quedarse en lo conocido por miedo a lo desconocido, equivale a mantenerse vivo pero no vivir.

leogtz

Sí funciona está bien....

Solo asegurate que el usuario escriba algo en el set /p.
Código (perl) [Seleccionar]

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

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

eXoRTH

es verdad, ahora termino el code para que tire error si no escribe nada.
Muchisimas gracias! :)
Quedarse en lo conocido por miedo a lo desconocido, equivale a mantenerse vivo pero no vivir.