Autor
|
Tema: extraer lineas txt y crear txt [batch] (Leído 15,061 veces)
|
presen
Desconectado
Mensajes: 4
|
Hola, soy principiante en bat, he buscado respuestas por el foro, pero no encuentro la solucion a lo k quiero hacer estoy intentando crear un script que haga lo siguiente: ping a varias ips externas, guarde el resultado en un txt y despues me copie las lineas que yo quiero en otros 2 txt. uno k se llame ok, donde ponga las k responden y otro txt llamado down donde ponga las k no respoden.
los dos primeros pasos los consigo, pero en el txt de down no encuentro la formula para que sea perfecto ya que si una ipo no responde lo guardado es de la siguiente forma:
Haciendo ping a 82.26.13.48 con 32 bytes de datos:
Tiempo de espera agotado para esta solicitud.
Estad¡sticas de ping para 82.26.13.48: Paquetes: enviados = 1, recibidos = 0, perdidos = 1 (100 perdidos),
y no consigo ninguna manera de copiar, por ejemplo la linea 1 y la 3, partiendo de la base de k no tiene por k ser ese el orden, ya k la anterior ip puede responder o no, luego el txt no tiene siempre la misma estructura.
Espero haberme explicado y k alguien k sepa me de un encaminamiento
Este el codigo k estoy utilizando para hacer el ping y k lo pase al 1er txt:
ALARMA.BAT
echo ================================================>> resultado.txt echo =============== Fecha : %date% =============>> resultado.txt echo =============== Hora : %time% =============>> resultado.txt echo ================================================>> resultado.txt for /F "tokens=*" %%a in (IPext.txt) do ( ping -n 1 %%a >> resultado.txt echo ______________________________________________________________>> resultado.txt ) call dns.bat
DNS.BAT @echo off echo ==============================================================>> ok.txt echo ==================== Fecha : %date% ======================>> ok.txt echo ==================== Hora : %time% ======================>> ok.txt echo ==============================================================>> ok.txt FINDSTR Respuesta resultado.txt >> ok.txt echo ______________________________________________________________>> ok.txt call down.bat
Este codigo me lista y guarda en ok.txt una salida k me vale: Respuesta desde 82.26.13.48: bytes=32 tiempo=107ms TTL=246
DOWN.BAT aki es donde tengo el problema ya k no se como tomar las referencias de la ip k me falla. el codigo k tengo no me sirve, ya k no soy capaz de extraer la linea de la ip + la de Tiempo de espera agotado para esta solicitud.
Espero no haber sido demasiado farragoso
gracias
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
para copiar una linea usando el edlin es Copiar [línea_inicio],[línea_fin],a_línea[,veces]C un ejemplo @echo off ( echo 1,1,100,1c echo e ) | edlin /b texto2.txt
y si queres la linea 2 cambia y pone esto esta sacado del manual de leo guitierrez la pagina ... funciona esta probado che para q no te jodan pone los code en la casilla de insertar codigo arriba de las caritas xq si no te cierran la pregunta
|
|
« Última modificación: 9 Noviembre 2009, 02:45 am por flony »
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
presen
Desconectado
Mensajes: 4
|
Gracias por la respuesta. y por la aclaracion de donde poner el codigo, lo siento ya Habia leido el manual de Leo Gutierrez Pero esta respuesta es para el caso k sepas lo k hay escrito en el txt y conozcas la linea k kieres copiar, yo lo k quiero, a ver si me explico mejor, es localizar una linea k tenga el texto xxxxx y copiar esa linea y 3 por encima de ella, asi si la respuesta es la siguiente: Haciendo ping a 80.24.34.171 con 32 bytes de datos:
Tiempo de espera agotado para esta solicitud.
Estad¡sticas de ping para 80.34.33.171: Paquetes: enviados = 1, recibidos = 0, perdidos = 1 (100 perdidos), localizo la linea k contenga "agotado", asi se k hay un error de ping, la copio en un txt llamado down.txt pero ahora me gustaria copiar 3 lineas arriba la de Haciendo ping.... para saber donde se ha producido el error. Mi problema es k no se k ip es la k me va a fallar, luego no se k lineas copiar, no hay un orden Espero haberme explicado mejor. Muchas gracias
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
...yo tenia una duda parecida y mas o menos esto te puede servir....es un code largo pero con unas modificaciones t puede servir...y esta bien explicado...
|
|
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
presen
Desconectado
Mensajes: 4
|
Gracias, creo k por ahi si. en cuanto lo tenga te lo enseño Un saludo
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Vé a ver si esto te sirve. Necesitas tener un archivo de texto (IPList.log) que contenga una IP o Host en cada línea. No importa cuántas líneas tenga; lo que cuenta es que haya una IP en cada una. A partir de ahí todo resulta bien. cls title Ping Maker [v0.1] By ^<N0ZI3 (FB ^> :Read for /f "useback tokens=*" %%L in (" %~dp0IPList.log" ) do ( ping %%L >"%temp%\ping.log" ) echo. & echo ERROR: La lista de IP's est vac¡a. & sleep 2 sleep 5 ) :SaveLog1 If [ %errorlevel%] == [0] set "opFile= %~dp0ping_OK.log" If [ %errorlevel%] == [1] set "opFile= %~dp0ping_Down.log" (echo Resultados de %host% & echo. )>>" %opFile%" For /f "useback tokens=*" %%S in (" %temp%\ping.log" ) do ( ) If [ %errorlevel%] == [0] ( echo ------------------------------------------------------------------------------- echo ------------------------------------------------------------------------------- >>" %opFile%" ) :SaveLog2 echo ------------------------------------------------------------------------------- echo ------------------------------------------------------------------------------- >>" %opFile%" ) :Error echo. & echo ERROR: No se encontr¢ la lista de IP's (IPList.log ). echo Debe crearla en el directorio actual y ejecutar echo nuevamente la aplicaci¢n. & sleep 2 sleep 10
Pruébalo y verás.. Avisa qué tal te va con él. Saludos. OJO: Acabo de hacerle un pequeño ajuste respecto al archivo que guardo en %temp%, por si habían copiado el código. Sería bueno que lo copien otra vez.
|
|
« Última modificación: 12 Noviembre 2009, 00:40 am por -=cym@n=- »
|
En línea
|
|
|
|
|
presen
Desconectado
Mensajes: 4
|
Impresionante!!!!!, eso es justo lo k necesitaba, pero en weno. gracias es PERFECT Te lo agradezco mucho -=cym@n=- La verdad es k me hace un papelon a pesar de k no entiendo una gran parte del codigo Tengo solo las noches para estudiar y ese nivel es demasiado complejo para mi. estaba dandole vueltas al asunto, y andaba comiendome el coco, entre numeraciones de lineas y copia y pega en archivos, años luz de esto. AUN ASI, jeje, en cuanto me funcione la publico.... espero no tardar demasiado. Sera la version muy muy muy cutre de esta. Gracias de nuevo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda - Extraer un texto de un .txt [Batch]
Scripting
|
eXoRTH
|
4
|
5,848
|
13 Noviembre 2011, 21:45 pm
por eXoRTH
|
|
|
(Solucionado) [Batch] Randomizar lineas en un txt?
« 1 2 »
Scripting
|
Eleкtro
|
17
|
12,358
|
31 Mayo 2014, 09:06 am
por Dsalomon
|
|
|
Ejecutar lineas de batch desde C++
Programación C/C++
|
kamykaze
|
5
|
7,464
|
29 Abril 2013, 00:13 am
por daryo
|
|
|
[BATCH]limite en el tamaño de lineas
Scripting
|
z_ane_666
|
3
|
3,382
|
4 Julio 2013, 22:23 pm
por zikotik
|
|
|
[Batch] Obtener ciertas lineas de un TXT
Scripting
|
noealmeida
|
0
|
2,065
|
7 Abril 2015, 12:41 pm
por noealmeida
|
|