Cómo leer cada campo de una línea mediante un archivo por lotes

Cómo leer cada campo de una línea mediante un archivo por lotes

Tengo un archivo cuyo contenido es el siguiente

 Testing:TEST1
 --- Import
 --- Build
 Testing:TEST2
 --- Import
 --- Build
 Testing:TEST3
 --- Import
 --- Build
Summary: Tests: 3 Failures:1

Necesito conseguir las figuras 3 y 1.

Respuesta1

¿Estás usando Windows >= 2000 para esto? Si es así, suponiendo que los datos estén en un archivo llamado "dump.txt", podría intentar crear un archivo por lotes (es decir, "foo.bat") que contenga este código:

@ECHO OFF
FOR /F "tokens=1,3,5 delims=: " %%A IN (dump.txt) DO (
   IF "%%A"=="Summary" echo %%B %%C
)

El archivo por lotes (foo.bat) y el archivo de datos (dump.txt) deben estar en la misma carpeta.

Más información sobre el uso de "FOR /F".

Respuesta2

Necesito conseguir las figuras 3 y 1.

Utilice el siguiente comando por lotes (test.cmd):

@echo off
setlocal
setlocal EnableDelayedExpansion
for /f "tokens=* skip=2" %%i in ('find "Summary" %1') do  (
  set _line=%%i
  for /f "tokens=3,4" %%j in ("!_line!") do (
    set _tests=%%j
    set _temp=%%k
    set _fails=!_temp:~-1!
    echo Number of tests: !_tests!
    echo Number of fails: !_fails!
    )
  )

Uso:

test File

Dónde:

  • El archivo es el archivo de datos ( %1)

Ejemplo:

F:\test>type test.txt
Testing:TEST1
 --- Import
 --- Build
 Testing:TEST2
 --- Import
 --- Build
 Testing:TEST3
 --- Import
 --- Build
Summary: Tests: 3 Failures:1

F:\test>test test.txt
Number of tests: 3
Number of fails: 1

Otras lecturas

información relacionada