次のような内容のファイルがあります
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
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- /fの場合- 別のコマンドの結果に対してコマンドをループします。
- 変数- 変数の一部(部分文字列)を抽出する