So lesen Sie jedes Feld einer Zeile über eine Batchdatei

So lesen Sie jedes Feld einer Zeile über eine Batchdatei

Ich habe eine Datei mit folgendem Inhalt

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

Ich muss die Zahlen 3 und 1 herausfinden.

Antwort1

Verwenden Sie hierfür Windows >= 2000? Wenn ja, könnten Sie, vorausgesetzt, die Daten befinden sich in einer Datei namens „dump.txt“, versuchen, eine Batchdatei (z. B. „foo.bat“) mit folgendem Code zu erstellen:

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

Die Batchdatei (foo.bat) und die Datendatei (dump.txt) müssen sich im selben Ordner befinden.

Weitere Informationen zur Verwendung von „FOR /F“.

Antwort2

Ich muss die Zahlen 3 und 1 bekommen

Verwenden Sie den folgenden Batch-Befehl (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!
    )
  )

Verwendung:

test File

Wo:

  • Datei ist die Datendatei ( %1)

Beispiel:

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

Weitere Informationen

verwandte Informationen