У меня есть файл, содержимое которого следующее
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) должны находиться в одной папке.
решение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
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- для /ф- Циклическая команда по результатам другой команды.
- переменные- Извлечь часть переменной (подстроку)