Как прочитать каждое поле строки через пакетный файл

Как прочитать каждое поле строки через пакетный файл

У меня есть файл, содержимое которого следующее

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

Мне нужно получить цифры 3 и 1.

решение1

Вы используете Windows >= 2000 для этого? Если так, то, предполагая, что данные находятся в файле с именем "dump.txt", вы можете попробовать создать пакетный файл (например, "foo.bat"), содержащий этот код:

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

Пакетный файл (foo.bat) и файл данных (dump.txt) должны находиться в одной папке.

Дополнительная информация об использовании "FOR /F".

решение2

Мне нужно получить цифры 3 и 1.

Используйте следующую пакетную команду (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!
    )
  )

Использование:

test File

Где:

  • Файл — это файл данных ( %1)

Пример:

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

Дальнейшее чтение

Связанный контент