Gunakan fc.exe dalam file batch untuk memisahkan baris baru dari baris lama

0

Saya punya dua file teks mount.txt dan mount2.txt dan saya sudah mencoba untuk memisahkan baris baru (baris yang tidak di mount.txt tetapi di mount2.txt) dari baris lama (baris yang ada di mount.txt tetapi tidak di mount2.txt). Saya tahu ini harus dimungkinkan dengan sesuatu seperti:

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

Output dari perintah fc terlihat seperti ini:

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
*****

Saya cukup acar tentang bagaimana tepatnya melakukan hal ini, karena saya masih sangat pemula for /f loop dan setlocals.

Mark Deven
sumber
1
Saya berasumsi bahwa judul Anda salah judul dan maksud Anda 'dalam' daripada 'adalah', benarkah itu? jika tidak tolong perbaiki judul Anda, karena itu tidak masuk akal.
barlop
Saya tidak tahu fc sebanyak itu, dan, saya tahu ini mungkin sedikit tidak perlu tetapi mungkin membuatnya sedikit lebih jelas. Bisakah Anda memasukkan konten dari setiap file? (Saya tahu output fc Anda mungkin menunjukkan konten setiap file, tetapi akan lebih jelas jika Anda memasukkan konten setiap file sebelum perintah fc)
barlop
Alih-alih menggunakan fc findstr /V /I /B /E /G:mount.txt <mount2.txt
LotPings
Yah, saya mencobanya dengan file ini di sini, dan mencoba menghapus satu atau dua baris, dan menambahkan beberapa yang acak: 1drv.ms/t/s!AlRLV33Rdz2CgrgbGh5l2u5E4o6uYw (perhatikan bahwa output akan berbeda dari contoh saya, yang saya sederhanakan. Output untuk file ini akan memiliki path).
Mark Deven

Jawaban:

0

Alih-alih menggunakan fc findstr dengan opsi:

 /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).

Anda dapat mengumpulkan opsi hanya dengan satu /

> findstr /VIBELG:mount.txt <mount2.txt
Logo
ITCMDSecondLogo
LotPings
sumber
Itu memberi saya banyak baris, mungkin sekitar 200, sebagai tanggapan, ketika saya tahu hanya ada 4 perbedaan.
Mark Deven
Itu seharusnya tidak terjadi, sulit untuk menebak / mengatakan alasan tanpa mengetahui konten file atau penyandian. Ada pembatasan dengan findstr tapi saya tidak pernah bertemu mereka dengan file ascii biasa. Mungkin program gui suka WinMerge apakah ada opsi untuk Anda?
LotPings
Saya memiliki garis miring terbalik di file saya, efek findstr bukan itu
Mark Deven
Saya sudah mencoba banyak cara seperti findstr dan bahkan untuk loop dengan gema, tetapi fc adalah satu-satunya cara yang jauh cepat untuk 2.000 file baris dan saya tahu untuk loop dimungkinkan.
Mark Deven
Kemudian tolong tambahkan / L pada sakelar untuk mematikan default / R
LotPings