[2000] File compare doet niet wat ik wil*

Pagina: 1
Acties:

  • Sneak[3G]
  • Registratie: September 2001
  • Laatst online: 06-11-2023
Ik gebruik deze functie om 2 .txt files te vergelijken. Nu lukt het me maar niet om er voor te zorgen dat ie alleen de regels afdrukt die verschillend zijn, terwijl hij hier toch voor gemaakt blijkt te zijn.

Voorbeeld

1.txt
1
2
3
4

2.txt
1
A
3
4

fc 1.txt 2.txt > output.txt

Output.txt
Bezig met het vergelijken van bestanden 1.txt en 2.TXT
***** 1.txt
1: 1
2: A
3: 3
***** 2.TXT
1: 1
2: 2
3: 3
*****

Bij de help staat:

Twee bestanden of groepen bestanden vergelijken en geeft de verschillen
tussen deze bestanden weer.


FC [/A] [/C] [/L] [/LBn] [/N] [/T] [/U] [/W] [/nnnn]
[station1:][pad1]bestandsnaam1 [station2:][pad2]bestandsnaam2
FC /B [station1:][pad1]bestandsnaam1 [station2:][pad2]bestandsnaam2

/A Geeft alleen de eerste en laatste regel van een groep
verschillende regels weer.
/B Voert een binaire vergelijking uit.
/C Negeert het verschil tussen hoofdletters en kleine letters.
/L Vergelijkt bestanden in ASCII-modus.
/LBn Stelt het maximum aantal opeenvolgende niet-overeenkomende
gevonden gevallen in op het opgegeven aantal regels.
/N Geeft de regelnummers weer tijdens een ASCII-vergelijking.
/T Maakt geen spaties van tabs.
/U Bestanden vergelijken als UNICODE-tekstbestanden.
/W Comprimeert lege ruimte (tabs en spaties) voor vergelijkings-
doeleinden.
/nnnn Bepaalt het aantal opeenvolgende regels die hetzelfde moeten zijn.

/nnnn is default 2, als ik dit verander in 0, 1, of 3 lukt het ook niet

Snapt iemand dit?

Aldi PC PIII 1 GHZ, GF2 GTS, 396 MB SDRAM/ALDI PC PIV 1,8, GF3 TI200, 396 MB SDRAM


  • franssie
  • Registratie: Februari 2000
  • Nu online

franssie

Save the albatross

[XPproSP2]ik kan het wel probleemloos reproduceren ... raar!

maar: als ik doornummer naar 10 laat ie nog steeds dezelfde output zien, die regel ervoor en erna moeten er dus af.
Alle opties nu wel zo'n beetje geprobeerd ...

[ Voor 64% gewijzigd door franssie op 01-08-2005 14:21 ]

I´d rather be a hypocrite than the same person forever (Yauch)| 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar


  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Welke versie van DOS hebben we het over, of anders welke Windowsversie?

Ik verplaats het topic in ieder geval even naar Windows Operating Systems vanuit Software Algemeen. We bespreken DOS/Windows/Batchscripts namelijk daar :)

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


Verwijderd

hij laat gewoon de verschillen zien:

regel 1= gelijk
regel 2= verschillend
regel 3= gelijk

regel 1 en 3 is alleen makkelijk zodat je de verschillen in de files makkelijk kan vinden.

de /A switch haalt waarschijnlijk de regel 1 en 3 weg, zodat je alleen de verschillen ziet...

  • Sneak[3G]
  • Registratie: September 2001
  • Laatst online: 06-11-2023
nee dat is niet waar dat doet de /A niet
de /A zorgt er voor dat tussenliggende foute regels niet afgedrukt worden.
Even voor de duidelijkheid, ik wil dus dat ie alleen regel 2 afdrukt en NIET regel 1 en regel 3.
Echt heel erg wazig dit.
oh ja de windowsversie is 2000 professional

[ Voor 9% gewijzigd door Sneak[3G] op 01-08-2005 17:04 ]

Aldi PC PIII 1 GHZ, GF2 GTS, 396 MB SDRAM/ALDI PC PIV 1,8, GF3 TI200, 396 MB SDRAM


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Wat FC doet is in principe meer bedoeld voor sourcecode of textbestanden die logischerwijs wijzigen - oftewel, als je bv. een zin toevoegt. FC gaat dan ook zelf de eerste volgende "matchende" regel op zoeken als dat lukt en gaat vervolgens vanaf daar pas weer de verschillen weergeven :)

  • franssie
  • Registratie: Februari 2000
  • Nu online

franssie

Save the albatross

okido, ben zelf aan het zoeken geslagen (functionaliteit is namelijk te simpel voor woorden) maar kan niets vinden dat de output met alleen de veschillen in een bestandje zet.
Het is natuurlijk wel te schrijven met een database-je etc maar het moet toch simpeler kunnen?
Als ik weet hoe het kan is er ook vast wel een doel voor te vinden (los van dat TS al een doel heeft)
dfc geeft de output wel leuk weer, maar bij mij alleen op scherm.
Verder kan ik zat tooltjes vinden die aangeven dat er een verschil is maar rapporteren welk vershcil :S ho maar

I´d rather be a hypocrite than the same person forever (Yauch)| 🎸 Niets is zo permanent als een tijdelijke oplossing | Een goed probleem komt nooit alleen | Gibson guitar Fender Guitar God Damn Guitar


  • Sneak[3G]
  • Registratie: September 2001
  • Laatst online: 06-11-2023
http://www.grigsoft.com/wc3setup.exe Compare It! 3.81 heet het
dat is een mooi programma, alleen ik mag geen .exe file installeren op het werk. Dit programma doet het wel goed.

[ Voor 9% gewijzigd door Sneak[3G] op 01-08-2005 22:20 ]

Aldi PC PIII 1 GHZ, GF2 GTS, 396 MB SDRAM/ALDI PC PIV 1,8, GF3 TI200, 396 MB SDRAM


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Wat is je precieze doel? Misschien is er wel een andere mogelijheid voor?
Anders zou je bv ook met VBScript dit vermoedelijk relatief simpel in elkaar moeten kunnen zetten gok ik? :)

  • Sneak[3G]
  • Registratie: September 2001
  • Laatst online: 06-11-2023
het doel is dat te doen wat FC doet alleen dan de regels er tussen uit de gelijk zijn. Heel simpel dus eigenlijk. Ik wil allen de regels zien die verschillend zijn. Dat lukt me niet met FC. Dat vind ik erg raar.

[ Voor 31% gewijzigd door Sneak[3G] op 02-08-2005 08:46 ]

Aldi PC PIII 1 GHZ, GF2 GTS, 396 MB SDRAM/ALDI PC PIV 1,8, GF3 TI200, 396 MB SDRAM


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Maar wat denk jij dat FC doet dan? Enkel de verschillen tonen, of moet hij ook progressief naar een matchende regel gaan zoeken?

Kijk:

code:
1
2
3
Dit is een lange zin.
Dit is er nog een.
En dit is helemaal lang.


en:

code:
1
2
3
4
Dit is een lange zin.
Dit is er nog een.
Deze is nog veel langer dan alle anderen
En dit is helemaal lang.


Moet hij in jouw geval enkel "Deze is nog veel langer dan alle anderen" weergeven of moet hij alles vanaf daar weergeven omdat het vanaf daar per lijn regel niet meer overeenkomt? :)

  • Sneak[3G]
  • Registratie: September 2001
  • Laatst online: 06-11-2023
In mijn bestanden kunnen dit soort dingen niet voorkomen (ik snap waar je naar toe wilt)
Ik wil dus dat ie regel 1 in tekst 1 vergelijkt met regel 1 in tekst 2. Als die verschillen dan moet ie de regels afdrukken, anders niet.
Jouw probleem wordt mooi opgelost in het progje compare it 3.81! zie voor link 4 posts terug.

Aldi PC PIII 1 GHZ, GF2 GTS, 396 MB SDRAM/ALDI PC PIV 1,8, GF3 TI200, 396 MB SDRAM


Verwijderd

Sneak[3G] schreef op maandag 01 augustus 2005 @ 22:20:
http://www.grigsoft.com/wc3setup.exe Compare It! 3.81 heet het
dat is een mooi programma, alleen ik mag geen .exe file installeren op het werk. Dit programma doet het wel goed.
ja dan hebbie een probleem. fc heeft nu eenmaal een zeer basic functionaliteit. er zijn zat andere proggies te vinden die wel kunnen wat je wilt, maar dat zullen ongetwijfeld exe's zijn.

maar misschien handig om te vertellen wat je wilt bereiken, er zijn misschien meer oplossingen :)

[ Voor 11% gewijzigd door Verwijderd op 02-08-2005 16:57 ]


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Sneak[3G] schreef op dinsdag 02 augustus 2005 @ 16:51:
In mijn bestanden kunnen dit soort dingen niet voorkomen (ik snap waar je naar toe wilt)
Ik wil dus dat ie regel 1 in tekst 1 vergelijkt met regel 1 in tekst 2. Als die verschillen dan moet ie de regels afdrukken, anders niet.
En FC doet dus precies wat ik je laat zien - die gaat op zoek naar de volgende matchende regel en displayed die dan :) (FC werkt eigenlijk beter als je sourcecode van programma's wilt vergelijken) :)

Ik denk dat je jouw probleem voornamelijk moet oplossen in VBscript, iets als:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
' even snel gecopieerd van wat sample code uit msdn
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    
    Set fileOne = fsObj.OpenTextFile("one.txt", 1, True) ' 1== read, false == Do Not create 
    Set fileTwo = fsObj.OpenTextFile("two.txt", 1, True) ' 1== read, false == Do Not create 

    Dim strOne, strTwo
        
    On Error Resume Next    
    While Err.Number = 0 
        strOne = fileOne.ReadLine
        strTwo = fileTwo.ReadLine
        
        If strOne <> strTwo Then WScript.Echo strTwo
    Wend
    
    ' and ...
    fileOne.Close
    fileTwo.Close


Zou je misschien er al mee moeten zijn :)
Pagina: 1