Perbedaan direktori dengan output file teks

2

Tampaknya saya tidak dapat menyimpan skrip yang saya gunakan untuk mengonversi beberapa repo Subversion ke yang Mercurial, lebih khusus lagi filemaps.

Bagaimana saya bisa mendapatkan perbedaan antara dua direktori (direktori yang ditambahkan / dihapus, file, dll.) Dengan hasil yang disediakan dalam file teks?

Isxek
sumber
1
DIR /b /s [subversion_directory] > svndir.txt & DIR /b /s [mercurial_directory] > hgdir.txt & [your_diff_tool] svndir.txt hgdir.txt
zb226
Bagaimana cara mencetak perbedaan? Katakanlah ada perbedaan, semuanya setelah itu akan salah (bahkan jika harus ditandai sama)
soandos
@ zb226 - Saya pikir keduanya harus diurutkan sama
Daniel R Hicks
@DanH: Anda benar, /o:n untuk penyortiran harus ditambahkan ke keduanya dir perintah.
zb226
@ zb226 - Maukah Anda mengubah komentar ini menjadi jawaban yang sebenarnya? Saya melakukannya dengan KDiff3 dan sebagian melakukan trik (saya masih harus memformatnya seperti seharusnya), jadi saya bisa menerimanya. Terima kasih!
Isxek

Jawaban:

3

Menggunakan alat diff lengkap menyebar atau kdiff3 (keduanya gratis) Anda dapat dengan mudah memeriksa perbedaannya dengan membandingkan file output dari file batch berikut. Karena, Anda perlu memberikan dua direktori sebagai argumen, tetapi Anda juga dapat mengaturnya langsung di SET dir... baris - mis. SET dir1=c:\svn dan SET dir2=c:\hg. Script menghapus awalan jalur dari nama file yang jika tidak akan berbeda pada semua baris.

@ECHO OFF
SetLocal EnableDelayedExpansion
SET dir1=%1
SET dir2=%2
ECHO. 2>dir1.txt
ECHO. 2>dir2.txt
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir1%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir1%\=! >> dir1.txt
)
FOR /f "tokens=*" %%F IN ('DIR /s /b /o:n %dir2%') DO ( 
    SET tmp=%%F
    ECHO !tmp:%dir2%\=! >> dir2.txt
)
EndLocal

Maka cukup diff kedua file output dir1.txt dan dir2.txt:

kdiff3 dir1.txt dir2.txt
zb226
sumber