Nhận đầu ra màu chọn lọc trong một cosole lệnh là khó khăn. Trong thời của DOS, bạn có thể sử dụng mã thoát ANSI thông qua ANSI.SYS. Nhưng điều đó không hoạt động trên các máy Windows hiện đại (chắc chắn không phải máy 64 bit và thậm chí có thể không phải máy 32 bit)
Bạn có thể sử dụng PowerShell để xuất một dòng màu. Ví dụ:
powershell write-host -foregroundcolor Red "Hello world"
Nhưng việc chuyển đổi bối cảnh rất chậm.
Ngoài ra còn có các tập tin hack hàng loạt sử dụng FINDSTR để chọn chuỗi đầu ra có màu. Xem Cách lặp lại với các màu khác nhau trong dòng lệnh Windows .
Nhưng cả hai kỹ thuật trên đều yêu cầu bạn cung cấp màu khi nội dung được tạo. Nhưng bạn muốn chọn lọc màu văn bản sau khi nó đã được tạo.
Chắc chắn không có tiện ích bản địa nào có thể làm những gì bạn muốn. Có lẽ có một công cụ của bên thứ 3 có thể tìm kiếm stdin và đánh dấu các trận đấu màu đỏ, nhưng tôi không quen với bất kỳ.
Thay vì sử dụng màu sắc, bạn có thể xem xét định dạng lại từng dòng có chứa chuỗi quan tâm. Ví dụ: các dòng khớp có thể được bắt đầu bằng một chuỗi như >>>>>>>>>>. Để thực hiện điều này, bạn cần hai điều: 1) Tìm kiếm và thay thế tiện ích dựa trên dòng regex, 2) khả năng đưa kết quả kiểm tra của bạn vào tiện ích.
Tôi đã viết một tiện ích lai JScript / batch gọi là REPL.BAT . Nó thực hiện tìm kiếm regex và thay thế trên stdin và ghi kết quả vào thiết bị xuất chuẩn. Tiện ích là tập lệnh thuần túy, do đó không cần thực thi bên thứ 3. Nó chạy trên mọi máy Windows từ XP trở đi. Tài liệu đầy đủ được xây dựng vào kịch bản.
Giả sử REPL.BAT nằm trong thư mục hiện tại của bạn hoặc tốt hơn là ở đâu đó trong PATH của bạn:
yourAutomatedTestCommand | repl ".*\bnot ok\b.*" ">>>>>>>>>> $&" i
Lệnh trên sẽ chỉ sửa đổi các dòng có chứa not ok (trường hợp không nhạy cảm) tại ranh giới từ. Có nhiều lựa chọn cho cách bạn định dạng lại dòng quan tâm. Ví dụ: toàn bộ dòng có thể được thêm cả trước và sau dòng sử dụng X tùy chọn kết hợp với \n trình tự thoát dòng mới.