Ms-Dos - Analizar una sola línea

 
Vista:

Analizar una sola línea

Publicado por Armando Nava  (194 intervenciones) el 06/11/2008 20:24:07
Saludos

Quiero saber si hay alguna forma de guardar la primer línea de un archivo en otro, por ejemplo ai el archivo contiene

uno
dos
tres

Hacer un archivo que solo contengala primer línea.

uno

El problema que tengo es que analizo el log de una conexión, cuando no hay conexión el log dice solamente

Desconectado.

Pero cuando esta viva la conexión manda mas lineas

conectado a 10.10.10.10 FTP server ready
331 Need password for user XXXX
230 User XXXX logged in
221 Goodbye

Hice mi validación mediante un FOR ya que no encontre otra manera

for /F "tokens=1" %%a in(test.log) do call verifica.bat

Hay alguna manera de ejecutar el for una unica vez?


Atte. Armando.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Analizar una sola línea

Publicado por amparitohijo (94 intervenciones) el 07/11/2008 17:18:03
Hola Armando.

Se me ocurre una forma de comprobar si existe esa línea en el archivo. Un FIND

Esto es:

FIND "conectado a 10.10.10.10 FTP server ready" archivoLOG.txt

esto te muestra el resultado siguiente:

-------- archivoLOG.txt
conectado a 10.10.10.10 FTP server ready

Lo puedes redireccionar a un archivo. Si quieres eliminar la línea "------- archivoLOG.txt" sólo se me ocurre un edlin:

ECHO delete 1,1>scriptedlin.tmp
EDLIN archivoLOG.txt < scriptedlin.tmp
DEL scriptedlin.tmp

Esto borra la primera línea del archivo.

No se si voy bien o si me entiendes, pero si tienes dudas, postea. Y si no las tienes, postea la solución. Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Analizar una sola línea

Publicado por Arnmando Nava (194 intervenciones) el 07/11/2008 23:48:02
Saludos..

Ya probe el edlin, si funciono, pero me mete un caracter adicional en el archivo, como no sabía que era edlin tuve problemas para salir de el, porque me faltaba una línea.

El archivo scriptedlin.tmp debe tener
2,3D
E

C:edlin cut.txt < scriptedlin.tmp
Final del archivo de entrada
*2,3D
*e

C:more cut.txt
uno


Si utilizo la salida con mis bats, si cuenta la flecha.
--------------------------------
echo off
for /F %%a in ('more cut.txt') do echo %%a

------------------
C:lineas.bat
C:echo off
uno


Por lo que me quedo con la opción del FINDSTR. Gracias amparitohijo (Alias Antero) de todas formas me sirvio para aprender algo nuevo, no sabia nada sobre el edlin.

Atte. Armando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Analizar una sola línea

Publicado por amparitohijo (94 intervenciones) el 07/11/2008 17:49:39
Hola de nuevo. Me acabo de leer el texto completo, ya mas despacito, y se me ocurre que con utilizar sólo el EDLIN se puede solucionar.

Si el archivo ARCHIVO1.TXT contiene:
Linea1Datos
Linea2Datos
Linea3Datos

Para que en ARCHIVO1.txt sólo se quede la primera línea, pon lo siguiente:

ECHO 2,3D>scriptedlin.tmp *** Esta línea borra de la segunda a la tercera líneas del archivo ***
ECHO E>scriptedlin.tmp *** Esta línea sale de Edlin guardando los datos ***
EDLIN ARCHIVO1.TXT<scriptedlin.tmp
DEL scriptedlin.tmp

Esto te dejaría el contenido de ARCHIVO1.TXT con sólo la primera línea. Si el archivo tuviese más de 3 líneas, en el ECHO al archivo scriptedlin.tmp tendrías que cambiar el 3 por el número de la última línea. Por cierto, creo que Edlin no admite comodines, y en algunas versiones de Windows Server no lo tiene, pero lo puedes copiar de una versión Professional al Server, que son 100% compatibles.

Si no sabes dónde acaba el archivo ARCHIVO1.TXT, puedes poner:
ECHO 2,1000D>scriptedlin.tmp

y asunto arreglado.

Espero que esto sí te aclare alguna duda, y de paso te saltas un par de pasos. Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Analizar una sola línea

Publicado por Armando Nava (194 intervenciones) el 07/11/2008 21:47:07
Saludos

Use la primera opción que mencionabas, pero con FINDSTR

findstr "onectado" D:LOG est.log > test1.log

Como lo que me interesa es ver sis se conecto o no me basta buscar "onectado"
y despues verifico por completo la palabra.

for /F "tokens=1" %%t in (test1.log) do call D:\PROGverifica.bat %%t

verifica.bat
--------------------------
set no_con=Desconectado.
set con=Conectado
if %1 EQU %no_con% call D:\PROGpantalla_desconectado.bat
if %1 EQU %con% call D:PROGpantalla_conectado.bat


Voy a probar ahora con el edlin.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar