Diff komutunun Windows eşdeğeri nedir?


284

Buna benzer bir yazı olduğunu biliyorum: burada . Belirtildiği gibi komutu
kullanmayı denedim comp, ancak biri "abcd" ve diğeri veri "abcde" ile veri olan iki dosya varsa, sadece dosyaların farklı boyutlarda olduğunu söylüyor. Tam olarak nerede farklı olduklarını bilmek istedim. Unix, basit fark bana hangi satır ve sütun, "abd" ve "abc" gibi bir şey varsa windows comp komutu çalışır. Başka türlü. Bunun için ne kullanabilirim?

Yanıtlar:


461

Bunu CMD kabuğunda veya toplu iş dosyasında çalıştırın:

FC file1 file2

FC ikili dosyaları karşılaştırmak için de kullanılabilir:

FC /B file1 file2

3
Bunu iki klasördeki tüm değiştirilmiş dosyalarla nasıl yaparsınız? Mesela, klasör1'in içeriğini klasör2'nin içeriği ile karşılaştırıyorum: klasör2'de değişen satırlar görünüyor mu?
Wolfpack'08

17
@ Wolfpack'08 ": FC path1\* FC path2\*klasörlerdeki tüm dosyaları karşılaştırır path1ve path2(dosyaların) aynı adlara sahip olmaları koşuluyla. Eşleşmeyen adlara sahip dosyalar varsa, FC eksik bir dosyayı bildirir, ancak yalnızca ilk klasörün dosyaları için İkinci klasörde bulunamamış, tam
Andriy M

@AndriyM Peki, yeni dosyalar FC herhangi bir gerçek satır döndürmeden hata veriyor? Sadece hata mesajı?
Wolfpack'08

1
@ Wolfpack'08: Evet, sadece eksik meslektaşı hakkındaki mesaj, mevcut partiden satır yok. (Ancak bu, varolan diğer dosya çiftlerinin işlenmesini sonlandırmaz ve eğer soruyorsanız, karşılaştırmaları yine de gerçekleştirilir.)
Andriy M

@AndriyM Yani, şöyle diyorsun: "Eğer hata: files in both directories are diff'd; files in only one directory throw errors." İlginç. Ama elbette diff'e eşdeğer bir 3. parti programı var mı?
Wolfpack'08

36

Windows'da mutlu bir şekilde diffve GNU araçlarının birçoğunu çalıştırıyorum . Cygwin ile yapabilirsiniz , ancak şahsen GnuWin32'yi tercih ediyorum çünkü çok daha hafif bir kurulum deneyimi.

Yani, cevabım, Windows eşdeğerinin kendisinden diffbaşka bir şey olmaması diff!


1
Cygwin'in temel kurulumu fark içermiyor gibi görünüyor. Bunu elde etmek için hangi ek paketleri kurmam gerekiyor?
Warren Dew

7
Cygwin'i tavsiye etmiyorum. Dif yerel bir Win32 portu kullanacaktım
David Heffernan

1
@WarrenDew İhtiyacınız olan Cygwin paketi diffutils. Bkz. Cygwin.com/cgi-bin2/…
Steve Pitchers


19

Başka bir alternatif de git'i buradan indirmek ve kurmaktır . Ardından yolunu eklemek Git\bin\için için PATHdeğişken. Bu size sadece diff değil, aynı zamanda windows komut satırından kullanabileceğiniz diğer birçok linux komutunu verecektir.

PATHDeğişkeni, Bilgisayar'a sağ tıklayıp Özellikler'i seçerek ayarlayabilirsiniz . Ardından, ekranın sol tarafındaki Gelişmiş Sistem Ayarları'na tıklayabilirsiniz. Açılır pencerede Ortam Değişkenleri'ni tıklayın ve ardından kullanıcı değişkenlerinizdeki PATH değişkeniniGit\bin\

Git diff belgeleri


@firelight - Cevabınız için teşekkür ederim. Burada ne demek istediğinizi ayrıntılı bir şekilde açıklayabilir misiniz: "Ardından, PATH değişkeninize Git \ bin \ yolunu ekleyin."
BKSpurgeon

2
@BKSpurgeon - Bilgisayar'a sağ tıklayıp Özellikler'i seçerseniz, ekranın sol tarafındaki Gelişmiş Sistem Ayarları'na tıklayabilirsiniz. Açılır pencerede Ortam Değişkenleri'ni tıklayın ve ardından Git \ bin \
Tim Hutchison ile

@JustinCormack Bunun için herhangi bir referansınız var mı? Git Bash'te farkını denedim ve işe yaradı
Tim Hutchison

3
@Tim Hutchison, cevabınızdan: "Bu size sadece diff değil, aynı zamanda windows komut satırından kullanabileceğiniz birçok linux komutu verecektir." - hangilerini kastediyorsun? Git'i yüklediğinde, PATH'den sadece git...yürütülebilir dosyalar bulunmalıdır . Ayrıca, cevap muhtemelen önemli bir bilgi içermelidir: fark aracını git diffsadece yazarak değil, yazarak başlatmanız gerekir diff.
Petr Bodnár

ahbap, bu tamamen başkadiff
vintproykt

14

FC benim durumumda harika çalışıyor sadece ben değişti hatları istediğim gibi yardımcı olmadı. FC ise dosya adı, aynı satırlar ve ikili karşılaştırma gibi ek veriler verir.

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09

ancak benim durumumda, yalnızca değiştirilen ve bu satırların başka bir üstbilgi veya veri olmadan farklı bir dosyaya aktarılmasını istedim.

Bu yüzden dosyayı karşılaştırmak için "findstr" kullandım :

findstr /V /G:data.txt.bak data.txt >DiffResult.txt

nerede :

data.txt.bak eski dosyanın adı

data.txt yeni dosyanın adı

DiffResult.txt değiştirilen verileri içerir, yani yalnızca bir satır #### 09


1
/ Değiştirilen sadece bir ilk satır ve son satır satırı / N satır numaralarını göster
Lukas

10

fc. fc, büyük dosyaları (> 4 GBayt) işlemede Cygwin'in farkından daha iyidir.


10

Bir de Powershell (Windows'un bir parçası) var. Hızlı değil ama esnek, temel komut. Daha iyi biçimlendirmeye ihtiyacınız varsa insanlar bunun için çeşitli cmdlet'ler ve komut dosyaları yazdı.

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)

Windows'un bir parçası değil, ancak Visual Studio ile bir geliştiriciyseniz, WinDiff (grafiksel) ile birlikte gelir

Ama kişisel favorim BeyondCompare, 30 dolara mal oluyor.


4

DiffUtils muhtemelen en iyi seçimdir . Dif'in Windows eşdeğeri.

Bildiğim kadarıyla, yerleşik eşdeğerleri yoktur.


Bunu da kullandım, ancak bugün bu sayfada sağlanan oldukça eski sürüm 2.8.7'nin bir hataya sahip olduğunu keşfettim (belirli PDF dosyalarını karşılaştırırken eşit olarak rapor edilir). Yani şimdi ateş ışığı tarafından önerildiği gibi "git diff" i tercih ediyor.
anre

4

COMP ile hata almanızın nedeni, yardımcı programın karşılaştırdığınız dosyaların aynı boyutta olduğunu varsaymasıdır. Üstesinden gelmek '/n'için karşılaştırmak istediğiniz satır sayısını belirleyebileceğiniz th seçeneğini kullanabilirsiniz . ( 'comp /?'komut satırına yazarak comp tarafından desteklenen seçeneklere bakın . böylece komutunuz şöyle görünecektir:

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 

COMP kullanmaya devam etmek istiyorsanız, bu sorununuzu çözmelidir. Ancak bu gerçekten büyük dosyalar için bir sorun olacaktır.

compBir seçenek olmasına rağmen , ilkel ve FCdaha iyi bir seçenek olduğunu hissediyorum . sık sık birine ihtiyacınız varsa FORFILESve FCbirlikte gerçekten iyi bir dosya sıkıştırma yardımcı programı yapmak için birlikte kullanabilirsiniz .

FC ref için şu şekilde kullanılır:

C:\>fc /c(case insensistive) /lbn(number of errors allowed before you wanna stop compare) /n(display line number) "filename1" "filename2"

bunun 'fc /?' umarız görebileceğiniz birçok seçenek var




0

Aşağıdaki aracın tam olarak neye ihtiyacınız olduğunu bilmiyorum. Ancak belirli dosyalar için bazı çevrimiçi araçlar kullanmayı seviyorum. Bu şekilde işletim sisteminden bağımsız olarak kullanabilirim. İşte bir örnek: diffchecker.com

Ama ihtiyaçlarım için, sanırım projemin dosyalarındaki değişiklikleri ve günlükleri izlemek için en iyi araç GIT. Bir ekipte çalışıyorsanız, sunucunuzda çevrimiçi bir repo yapabilir veya Bitbucket veya Github ile kullanabilirsiniz.

Umarım birine yardımcı olur.


0

Git'i makinenize kurduysanız, bir git terminalini açabilir ve Linux diffkomutunu normal şekilde kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.