Eu tenho um arquivo cujo conteúdo é o seguinte
Testing:TEST1
--- Import
--- Build
Testing:TEST2
--- Import
--- Build
Testing:TEST3
--- Import
--- Build
Summary: Tests: 3 Failures:1
Eu preciso pegar os números 3 e 1.
Responder1
Você está usando o Windows>= 2000 para isso? Nesse caso, supondo que os dados estejam em um arquivo chamado "dump.txt", você pode tentar criar um arquivo em lote (ou seja, "foo.bat") contendo este código:
@ECHO OFF
FOR /F "tokens=1,3,5 delims=: " %%A IN (dump.txt) DO (
IF "%%A"=="Summary" echo %%B %%C
)
O arquivo em lote (foo.bat) e o arquivo de dados (dump.txt) devem estar na mesma pasta.
Responder2
preciso pegar os números 3 e 1
Use o seguinte comando em lote (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
Onde:
- Arquivo é o arquivo de dados (
%1
)
Exemplo:
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
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- para /f- Comando de loop em relação aos resultados de outro comando.
- variáveis- Extrair parte de uma variável (substring)