Câu hỏi này đang được tiếp tục đến another question about selectively appending lines from one file to another.Dòng lệnh/vỏ lệnh của Windows - loại bỏ UTF-8 BOM
Regex mà tôi đang sử dụng hoạt động tốt khi khớp với các dòng để giữ/hủy. Vấn đề là tệp được tạo từ một loạt các tệp khác và đôi khi dòng tôi muốn bắt đầu là dòng đầu tiên của tệp được mã hóa UTF-8. Điều này có nghĩa rằng findstr
lệnh trở về một cái gì đó như:
LineToKeep that started out as the first line in its file
LineToKeep another
LineToKeep more lines
LineToKeep that started out as the first line in its file
LineToKeep more
Nó đảm bảo rằng ngoại trừ các byte BOM, dòng sẽ luôn luôn bắt đầu bằng "LineToKeep". Làm thế nào tôi có thể loại bỏ ba byte UTF-8 BOM đó, vì các lệnh này có thể không xử lý chúng đúng cách?
Tôi đang hy vọng tìm cách xóa chúng tại chỗ hoặc có thể sửa đổi lệnh findstr
từ câu hỏi trước đó.
Vì tôi biết mỗi dòng phải bắt đầu bằng "LineToKeep" hoặc "∩╗┐LineToKeep", tôi tính có cách để tính toán một cái gì đó như if (Line[3:10] == "LineToKeep") { Line = Line[3:]; }
cho mỗi dòng.
..và đây là lý do tại sao perl nên giao hàng với mọi hệ điều hành ;-) –
Bạn có nghĩ đến việc sử dụng Powershell thay vì trình thông dịch lệnh vanilla không? Làm một cái gì đó như thế này sẽ là tầm thường. Vỏ Windows không giống Unicode nhiều. – kprobst
Tôi sẽ chạy tập lệnh trong các sự kiện trước/sau xây dựng của Visual Studio. Theo http://stackoverflow.com/questions/6500320/post-build-event-execute-powershell, việc chạy tập lệnh PowerShell có thể là một tùy chọn. Nó sẽ cảm thấy giống như một giải pháp bên ngoài mặc dù. – Kache