Cách đọc từng trường của một dòng qua tệp bó


0

Tôi có một tập tin có nội dung như sau

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

Tôi cần lấy số liệu 3 và 1.

Câu trả lời:


2

Bạn có đang sử dụng Windows & gt; = 2000 cho việc này không? Nếu vậy, giả sử dữ liệu nằm trong một tệp có tên "dump.txt", bạn có thể thử tạo một tệp bó (tức là "foo.bat") có chứa mã này:

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

Tệp bó (foo.bat) và tệp dữ liệu (dump.txt) phải nằm trong cùng một thư mục.

Thông tin thêm về việc sử dụng "FOR / F" .


Khéo léo. Ngắn hơn nhiều so với giải pháp của tôi;)
DavidPostill

@DavidPostill: Bạn tôn trọng tôi. Cảm ơn sự đánh giá cao, tôi tôn trọng bạn :-)
danicotra

0

Tôi cần lấy số 3 và 1

Sử dụng lệnh bó sau (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!
    )
  )

Sử dụng:

test File

Ở đâu:

  • Tệp là tệp dữ liệu ( %1 )

Thí dụ:

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

Đọc thêm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.