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.
Archivo:
---------- C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS
[22]255.255.255.0 www.pagina.com
@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>
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.
Sí funciona está bien....
Solo asegurate que el usuario escriba algo en el set /p.
es verdad, ahora termino el code para que tire error si no escribe nada.
Muchisimas gracias! :)