Sử dụng fc.exe trong tệp bó để tách các dòng mới khỏi các dòng cũ


0

Tôi có hai tập tin văn bản mount.txtmount2.txtvà tôi đã cố gắng để tách dòng mới (dòng mà không được ở mount.txt nhưng trong mount2.txt) từ dòng cũ (dòng mà là trong mount.txt nhưng đang không ở trong mount2.txt ). Tôi biết điều này phải có thể với một cái gì đó như:

fc mount.txt mount2.txt >out.txt
for /F "tokens=*" %%A in  (out.txt) do (
 ::separate Line)

Đầu ra của lệnh fc trông như thế này:

Comparing files mount.txt and MOUNT2.txt
***** mount
ITCMDLogo
CBS
***** MOUNT2
Logo
ITCMDSecondLogo
CBS
*****

***** mount
MozillaPlugins
Acknowledgements
ReadMe\Palemoon-Portable-license.txt
***** MOUNT2
MozillaPlugins
ReadMe\Palemoon-Portable-license.txt
*****

Tôi khá khó hiểu về cách chính xác để thực hiện điều này, vì tôi vẫn còn rất nhiều người mới bắt đầu với for /fcác vòng lặp và setlocals.


1
Tôi đã cho rằng tiêu đề của bạn bị nhầm lẫn và bạn có nghĩa là 'trong' chứ không phải 'là', đúng không? nếu không xin vui lòng sửa tiêu đề của bạn, bởi vì nó không có ý nghĩa.
barlop

Tôi không biết fc nhiều như vậy, và, tôi biết điều này có thể hơi không cần thiết nhưng nó có thể làm cho nó rõ ràng hơn một chút. Bạn có thể bao gồm nội dung của từng tập tin? (Tôi biết đầu ra fc của bạn có thể chỉ ra nội dung của từng tệp, nhưng sẽ rõ ràng hơn nếu bạn bao gồm nội dung của từng tệp trước lệnh fc)
barlop

Thay vì sử dụng fcfindstr /V /I /B /E /G:mount.txt <mount2.txt
LotPings

Chà, tôi đã thử nó với tệp này ở đây, và đã thử chỉ xóa một hoặc hai dòng và thêm một số ngẫu nhiên: 1drv.ms/t/s!AlRLV33Rdz2CgrgbGh5l2u5E4o6uYw (lưu ý rằng đầu ra sẽ khác với ví dụ của tôi. Đầu ra cho tập tin này sẽ có đường dẫn).
Đánh dấu

Câu trả lời:


0

Thay vì fc sử dụng findstr với các tùy chọn:

 /V         Prints only lines that do not contain a match.
 /I         Specifies that the search is not to be case-sensitive.
 /B         Matches pattern if at the beginning of a line.
 /E         Matches pattern if at the end of a line.
 /G:file    Gets search strings from the specified file(/ stands for console).

Bạn có thể thu thập các tùy chọn chỉ với một /

> findstr /VIBELG:mount.txt <mount2.txt
Logo
ITCMDSecondLogo

Điều đó đã cho tôi một loạt các dòng, có lẽ khoảng 200, để đáp lại, khi tôi biết chỉ có 4 sự khác biệt.
Đánh dấu

Điều đó không nên xảy ra, khó đoán / nói lý do mà không biết nội dung tệp hoặc mã hóa. Có những hạn chế với findstr nhưng tôi chưa bao giờ gặp chúng với các tệp ascii đơn giản. Có lẽ một chương trình gui như WinMerge là một lựa chọn cho bạn?
LotPings

Tôi có dấu gạch chéo ngược trong các tệp của mình, những hiệu ứng tìm thấy phải không
Đánh dấu

Tôi đã thử một loạt các cách như findstr và thậm chí cho các vòng lặp có tiếng vang, nhưng fc là cách duy nhất từ ​​xa nhanh cho 2.000 tệp dòng và tôi biết vòng lặp for là có thể.
Đánh dấu

Sau đó, vui lòng thêm / L vào các công tắc để tắt mặc định / R
LotPings
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.