elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Leer solo una parte de un fichero de texto, ¿como?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer solo una parte de un fichero de texto, ¿como?  (Leído 7,512 veces)
yeahhh

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Leer solo una parte de un fichero de texto, ¿como?
« en: 9 Junio 2010, 15:25 pm »

Hola, me presento en este foro con una pregunta.
He estado mirando manuales de batch pero no encuentro como hacer lo que busco, me explico.
Necesito hacer un .bat el cual lee un fichero de texto, que contiene 6 lineas de texto, de las cuales solo me interesa 1 de ellas, y de esa linea que me interesa, necesito recortarla.
Me explico, el fichero de texto tendría esto:

l \CheckWMI.cpp(323) |----------------+
l \CheckWMI.cpp(324) | CurrentVoltage |
l \CheckWMI.cpp(325) |----------------+
l \CheckWMI.cpp(334) |             14 |
l \CheckWMI.cpp(336) |----------------+

A mi me interesa la linea 4, pero borrando los xx primeros caracteres para quedarme solo con el valor númerico de la linea, y evidentemente también borrando el final, solo capturar el número.

Luego ese número lo almacenaría en una variable, que pasaría con un "echo" que es lo que necesito.

Como puedo hacer esto?

Gracias.

P.D: El fichero txt lo genero llamando a un .exe y redirigiendo con > hacia el fichero.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Leer solo una parte de un fichero de texto, ¿como?
« Respuesta #1 en: 9 Junio 2010, 22:43 pm »

A ver, supongamos que tenemos esto:

Código:
C:\>type file.txt
l \CheckWMI.cpp(323) |----------------+
l \CheckWMI.cpp(324) | CurrentVoltage |
l \CheckWMI.cpp(325) |----------------+
l \CheckWMI.cpp(334) |             14 |
l \CheckWMI.cpp(336) |----------------+

C:\>

Si solo quiero el número que está entre parentesis de la cuarta linea:

Código:
C:\>type file.txt
l \CheckWMI.cpp(323) |----------------+
l \CheckWMI.cpp(324) | CurrentVoltage |
l \CheckWMI.cpp(325) |----------------+
l \CheckWMI.cpp(334) |             14 |
l \CheckWMI.cpp(336) |----------------+

C:\>code.bat
Numero : 334


C:\>
Código
  1. @echo off
  2. (
  3. echo 4, 4l
  4. echo e
  5. echo e
  6. ) | edlin file.txt | findstr /v /i "^Final" | findstr /v /i "^\*4.*" | findstr /v /i "^\*e.*$" > "temp.txt"
  7. for /f "tokens=2 delims=()" %%a in (temp.txt) do (
  8. echo Numero : %%a
  9. )
  10. set /p "="
  11. exit /b 0


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
yeahhh

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Leer solo una parte de un fichero de texto, ¿como?
« Respuesta #2 en: 9 Junio 2010, 22:52 pm »

Gracias por la respuesta!!!
Realmente no quería esa cifra, quiero la cifra suelta que hay en esa misma linea (el 14), pero revisando el código averigüare como llegar a coger solo esa cifra.

Gracias de nuevo.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Leer solo una parte de un fichero de texto, ¿como?
« Respuesta #3 en: 9 Junio 2010, 22:58 pm »

Código
  1. @echo off
  2. (
  3. echo 4, 4l
  4. echo e
  5. echo e
  6. ) | edlin file.txt | findstr /v /i "^Final" | findstr /v /i "^\*4.*" | findstr /v /i "^\*e.*$" > "temp.txt"
  7. for /f "tokens=2 delims=||" %%a in (temp.txt) do (
  8. set "numero=%%a"
  9. )
  10. set "numero=%numero: =%"
  11. echo Numero : %numero%
  12. exit /b 0

Código:
C:\>type FILE.TXT
l \CheckWMI.cpp(323) |----------------+
l \CheckWMI.cpp(324) | CurrentVoltage |
l \CheckWMI.cpp(325) |----------------+
l \CheckWMI.cpp(334) |             14 |
l \CheckWMI.cpp(336) |----------------+

C:\>code.bat
Numero : 14

C:\>
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines