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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.