バッチファイルで行の各フィールドを読み取る方法

バッチファイルで行の各フィールドを読み取る方法

次のような内容のファイルがあります

 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

参考文献

関連情報