2011-07-29 12 views
215

मुझे पता है कि इस तरह की एक पोस्ट है: here
मैंने comp कमांड का उपयोग करने की कोशिश की है, लेकिन अगर मेरे पास दो फाइलें हैं, तो "abcd" जैसे डेटा और दूसरा "abcde" डेटा के साथ, यह कहता है कि फाइलें विभिन्न आकारों के हैं। मैं जानना चाहता था कि वे वास्तव में कहां भिन्न हैं। यूनिक्स में, सरल diff मुझे कौन सी पंक्ति और कॉलम बताता है, विंडोज़ में कॉम्प कमांड काम करता है अगर मेरे पास "abd" और "abc" जैसा कुछ है। अन्यथा नहीं। कोई विचार जो मैं इसके लिए उपयोग कर सकता हूं?diff कमांड के विंडोज समतुल्य क्या है?

उत्तर

345

भागो इस सीएमडी खोल या बैच फ़ाइल में:

FC file1 file2 

FC भी बाइनरी फ़ाइलें तुलना करने के लिए इस्तेमाल किया जा सकता:

FC /B file1 file2 
+1

शानदार! धन्यवाद! :) – wittythotha

+0

आप दो बदले में सभी बदली गई फ़ाइलों के साथ ऐसा कैसे करते हैं? जैसे, मैं फ़ोल्डर 1 की सामग्री को फ़ोल्डर 2 की सामग्रियों से तुलना करता हूं: फ़ोल्डर 2 में कोई भी बदली हुई रेखाएं दिखती हैं? –

+11

@ वुल्फपैक'08 ": 'एफसी पथ 1 \ * एफसी पथ 2 \ *' फ़ोल्डरों' पथ 1' और 'पथ 2' में सभी फ़ाइलों की तुलना करेगा, बशर्ते वे (फाइलों) के समान नाम हों। अगर मेलिंग नामों वाली फाइलें हैं , एफसी एक लापता फाइल की रिपोर्ट करेगा, लेकिन केवल पहले फ़ोल्डर की फाइलों के लिए जो दूसरे फ़ोल्डर में नहीं मिलती है, न कि दूसरी तरफ। सभी विसंगतियों को पकड़ने के लिए, एक अलग तकनीक की आवश्यकता होगी। –

20

Winmerge में command line utility है जो जांच के लायक हो सकता है।

इसके अलावा, आप इसके बारे में भी ग्राफिकल भाग का उपयोग कर सकते हैं जो आपको चाहिए।

+2

हालांकि यह एक अंतर्निहित विंडोज उपयोगिता नहीं है, लेकिन मैं अत्यधिक अनुशंसा करता हूं - यह ओपन-सोर्स, लाइट-वेट, और मेरे अनुभव में बग-फ्री है। –

+1

@ डेविड.बर्कुइज़ेन यह बहुत बुरा है कि वे अपनी फाइलों को सख्ती से स्रोत फोर्ज पर होस्ट करते हैं। – Mo2

4

DiffUtils शायद आपकी सबसे अच्छी शर्त है। यह विंडोज़ diff के बराबर है।

मेरे ज्ञान के लिए कोई अंतर्निहित समकक्ष नहीं हैं।

+0

मैंने इसका भी उपयोग किया, हालांकि, आज मैंने पाया कि उस पृष्ठ पर प्रदान किया गया पुराना पुराना संस्करण 2.8.7 एक बग है (जब कुछ पीडीएफ फाइलों की तुलना की जाती है तो उन्हें समान के रूप में रिपोर्ट किया जाता है)। तो अब अग्निशामक द्वारा सुझाए गए "गिट diff" पसंद करते हैं। – anre

24

खैर, विंडोज पर मैं खुशी से diff चलाने के लिए और कई अन्य जीएनयू उपकरण। आप इसे cygwin के साथ कर सकते हैं, लेकिन मैं व्यक्तिगत रूप से GnuWin32 पसंद करता हूं क्योंकि यह बहुत हल्का इंस्टॉलेशन अनुभव है।

तो, मेरा जवाब यह है कि diff के विंडोज समकक्ष, diff के अलावा कोई अन्य नहीं है!

+0

सिगविन का मूल इंस्टॉल diff शामिल नहीं प्रतीत होता है। इसे पाने के लिए मुझे कौन से अतिरिक्त पैकेज स्थापित करने की आवश्यकता है? –

+5

मैं साइगविन की सिफारिश नहीं करता हूं। मैं diff –

+1

@WarrenDew के मूल Win32 पोर्ट का उपयोग करता हूं, आपको जिस सिगविन पैकेज की आवश्यकता है वह 'diffutils' है। Https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fdiffutils%2Fdiffutils-3.3-2&grep=diff –

8

एफसी। सिगविन के diff की तुलना में बड़ी फ़ाइलों (> 4 GBytes) को संभालने में एफसी बेहतर है।

7

पावरहेल भी है (जो विंडोज का हिस्सा है)। यह जल्दी नहीं है लेकिन यह लचीला है, यहां बुनियादी आदेश है। यदि आपको बेहतर स्वरूपण की आवश्यकता है तो लोगों ने इसके लिए विभिन्न cmdlets और स्क्रिप्ट लिखी हैं।

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

विंडोज का हिस्सा नहीं है, लेकिन यदि आप दृश्य स्टूडियो के साथ एक डेवलपर हैं, यह WinDiff (चित्रमय)

के साथ आता है लेकिन मेरी निजी पसंदीदा BeyondCompare है, जो $ 30 शुल्क लगता है।

12

एक और विकल्प http://git-scm.com/downloads से गिट डाउनलोड और स्थापित करना है। फिर, अपने पैथ चर में गिट \ bin \ के लिए पथ जोड़ें। यह आपको न केवल diff, बल्कि कई अन्य लिनक्स कमांड भी देगा जो आप विंडोज कमांड लाइन से उपयोग कर सकते हैं।

+0

मैं यही करता हूं –

+0

यह दृष्टिकोण मेरी टीम के लिए सबसे अच्छा काम करता है। जीआईटी स्थापित करना आसान है। यह आपको लिनक्स के रूप में निष्पादन योग्य सटीक डिफ कमांडलाइन चलाने की अनुमति देता है। – CoryCowgill

+0

@ फ़ायरलाइट - आपके उत्तर के लिए धन्यवाद। क्या आप यहां बताए गए विवरण का विस्तार कर सकते हैं: "फिर, अपने पैथ चर में गिट \ bin \ के लिए पथ जोड़ें।" – BKSpurgeon

1

कॉम्प के साथ त्रुटि प्राप्त करने का कारण यह है कि उपयोगिता उन फ़ाइलों को मानती है जो आप तुलना कर रहे हैं एक ही आकार के हैं। इसे दूर करने के लिए आप th '/n' विकल्प का उपयोग कर सकते हैं जिसके साथ आप उन लाइनों की संख्या निर्दिष्ट कर सकते हैं जिन्हें आप तुलना करना चाहते हैं। (कंप्यूटर अनुप्रयोग द्वारा समर्थित विकल्पों को देखने के कमांड लाइन पर 'comp /?' टाइप करके तो अपने आदेश दिखाई देगा:।।

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

अगर आप COMP का उपयोग करने छड़ी करना चाहते हैं आपकी समस्या का समाधान करना चाहिए लेकिन इसके लिए एक समस्या हो जाएगा वास्तव में बड़ी फाइलें।

हालांकि comp एक विकल्प है, लेकिन मुझे लगता है कि यह आदिम है और FC एक बेहतर विकल्प है। आप FORFILES और FC का उपयोग कर सकते हैं, यदि आप लगातार आधार पर एक की आवश्यकता होती है तो शायद वास्तव में एक अच्छी फ़ाइलकंपवेयर उपयोगिता बना सकते हैं।

एफसी रेफरी के लिए इस तरह से प्रयोग किया जाता है:

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

वहाँ कई विकल्प उपलब्ध है जो आप के द्वारा 'fc /?' आशा देख सकते हैं इस में मदद करता है

7

एफसी से मेरे मामले में यह के रूप में सहायक नहीं था अच्छा काम करता है मैं बस लाइनों को बदलना चाहता था। और एफसी फ़ाइल नाम, समान लाइनों और द्विपक्षीय तुलना जैसे अतिरिक्त डेटा देते हैं।

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

लेकिन मेरे मामले में मैं केवल लाइनों को बदल दिया है कि चाहता था और उन पंक्तियों के किसी अन्य शीर्ष लेख या डेटा के बिना, विभिन्न फ़ाइल को निर्यात किया जा करने के लिए चाहता था।

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

जहां:

तो मैं फ़ाइल की तुलना करने के "findstr" इस्तेमाल किया

data.txt.bak पुरानी फाइल

data.txt का नाम है नई फ़ाइल

का नाम है

DiffResult.txt में डेटा बदल दिया गया है यानी केवल एक लाइन #### 09

+0

**/ए ** के साथ अपने उपयोगकर्ता चर में पाथ चर जोड़ें या अपडेट करें ** केवल पहली पंक्ति और ब्लॉक की अंतिम पंक्ति बदल दी गई है **/N ** लाइन नंबर – Lukas

0

diff कमांड के बराबर विंडो एफसी (फ़ाइल कॉमप्रे) कमांड है।
1. एक फ़ोल्डर में दो फ़ाइलों (उदाहरण file1.html और file2.html)
2. लॉन्च कमांड प्रॉम्प्ट रखें
3. प्रकार एफसी file1Location file2Location
:

यहाँ ऐसा करने के लिए बुनियादी कदम हैं

ही पर एक विस्तृत ट्यूटोरियल मिल गया है:

http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/

0

मैं अगर निम्न उपकरण आपको exatly क्या जरूरत है पता नहीं है। लेकिन मैं विशिष्ट फाइलों के लिए, कुछ ऑनलाइन उपकरण का उपयोग करना पसंद करता हूं। इस तरह मैं परिचालन प्रणाली के बावजूद इसका उपयोग कर सकता हूं। यहां एक उदाहरण दिया गया है: diffchecker.com

लेकिन मेरी ज़रूरतों के लिए, मुझे लगता है कि परिवर्तनों को ट्रैक करने के लिए सबसे अच्छा टूल और मेरी परियोजना की फाइलों के लॉग जीआईटी हैं। यदि आप किसी टीम में काम करते हैं, तो आप अपने सर्वर में कुछ रेपो ऑनलाइन कर सकते हैं, या बिटबकेट या गिथब के साथ इसका इस्तेमाल कर सकते हैं।

उम्मीद है कि यह किसी की मदद करेगा।

1

मुझे विंडोज़ के लिए हल्का ग्राफिकल सॉफ़्टवेयर मिला है जो diff कमांड की कमी में उपयोगी प्रतीत होता है। यह मेरी सभी समस्याओं को हल कर सकता है।

WinDiffhttp://www.grigsoft.com/download-windiff.htm

0

आप अपने मशीन पर Git स्थापित किया है, तो आप एक Git टर्मिनल खोल सकते हैं और सिर्फ सामान्य रूप में लिनक्स diff आदेश का उपयोग करें।

+0

दिखाएं टिम हचिसन ने साढ़े सालों पहले ही उस उत्तर (एक बेहतर गुणवत्ता में) दिया है। – Stephan

संबंधित मुद्दे