Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: yeahhh en 9 Junio 2010, 15:25 pm



Título: Leer solo una parte de un fichero de texto, ¿como?
Publicado por: yeahhh 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.


Título: Re: Leer solo una parte de un fichero de texto, ¿como?
Publicado por: leogtz 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


Título: Re: Leer solo una parte de un fichero de texto, ¿como?
Publicado por: yeahhh 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.


Título: Re: Leer solo una parte de un fichero de texto, ¿como?
Publicado por: leogtz 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:\>