Czy istnieje narzędzie do porównywania wartości w plikach .ini? [Zamknięte]

10

Szukam narzędzia do porównywania plików specjalnie dla plików .ini, zwykle używanych jako pliki ustawień.

Istnieje wiele narzędzi do porównywania plików (WinDiff, Beyond Compare, CompareIt, WinMerge, ...), ale żadne z narzędzi, które wypróbowałem, nie radzi sobie bardzo dobrze z plikami .ini.

Typowy plik .ini może wyglądać następująco:

[Settings]
Setting1=abc
Setting2=xyz

Narzędzie powinno dopasowywać wiersze na podstawie ciągu przed znakiem równości, a następnie pokazywać różnice we wszystkim innym po znaku równości. Kolejność linii w sekcji (sekcje są oznaczone nawiasami kwadratowymi) nie ma znaczenia i należy ją zignorować.

Nie mogę znaleźć żadnego narzędzia, które to poradziłoby. Zazwyczaj istniejące narzędzia pokazują różnice na początku wiersza przed znakiem równości (jeśli większość tekstu po znaku równości pasuje), będą walczyć z ponownie uporządkowanymi liniami (albo pokaż to wszystko, co zmienione, albo dopasuj niektóre linie i pokaż pozostałe zostały usunięte w jednym miejscu, a następnie dodane w innym). Znalazłem nawet narzędzia, w których można ograniczyć dopasowywanie tekstu, np. Używając wyrażeń regularnych, ale one po prostu ignorują resztę wiersza i nie mogę dopasować wierszy na podstawie jednego wzorca (tj. Wszystkiego przed znakiem równości), a następnie porównać je na podstawie na innym (wszystko po znaku równości).

ssollinger
źródło
Teraz, gdy przeczytałem twoje pytanie, naprawdę nie rozumiem, czego chcesz ... być może możesz pokazać, co CHCESZ, a także to, co masz. Wyrażenia regularne i różnice powinny być w stanie obsłużyć to, co chcesz zrobić.
Joseph Kern
Powinieneś zmienić nazwę swojego posta .... Czy istnieje narzędzie do porównywania wartości w plikach .ini?
Joseph Kern
1
Dla OS / 2: os2world.com/goran/initools.htm ;-)
splattne
Dzięki, Joseph, dobra uwaga, zredagowałem tytuł. splattne - initools brzmi jak byłoby idealnie, szkoda, że ​​korzystam z systemu Windows.
ssollinger

Odpowiedzi:

6

Beyond Compare ma posortowaną regułę INI, którą można pobrać .

crb
źródło
1
Fantastycznie, właśnie tego szukałem. Wcześniej krótko spojrzałem na Beyond Compare, ale nie zauważyłem zasady posortowanej ini. Jeśli ktoś jest zainteresowany, link w Twojej odpowiedzi dotyczy Beyond Compare 2. „Reguła posortowanego ini” dla Beyond Compare 3 jest dostępna tutaj: scootersoftware.com/download.php?zz=kb_moreformats
ssollinger
Link z pierwszego komentarza nie działa - 404. Jest jeszcze jedna strona tylko z BC4 - scootersoftware.com/download.php?zz=kb_moreformatsv4
pl71
4

Tak, wiem, że to starożytne pytanie, ale chciałbym zasugerować narzędzie, które napisałem:

dzIniFileFormatter, który jest dostępny z SourceForge

dummzeuch
źródło
2

Często po prostu sortowałem pliki przed porównaniem. To nie pomoże, jeśli masz coś takiego

[foo]
bar1=xyz
bar2=abc
[foo2]
bar1=lky

ale zakładając, że twoje klucze są unikalne (i dlatego można je dopasować do sekcji), często działa to w skrócie.

Mikeage
źródło
To czasem pomaga, jednak, jak powiedziałeś, nie działa, jeśli jest kilka sekcji, często również zawiedzie, jeśli w jednym z plików brakuje kilku linii (większość narzędzi zaczyna próbować dopasować niewłaściwe linie).
ssollinger
prawdziwe; Nie polecam tego jako ideału, ale w
skrócie,
2

Wypróbuj vimdiff. Oto przykład z plikami .ini.

chmeee
źródło
MOJE OCZY! .Xdefaults! Zmienić je!
Joseph Kern
1
Tak, bardzo brzydkie, przepraszam. Ale nie sądzę, żeby miało to nic wspólnego z .Xdefault, ponieważ jest to konsola. Zajrzę do dokumentacji vima, żeby zmienić te kolory :).
chmeee
1
na wypadek, gdyby ktoś był zainteresowany - vimdiff jest dostępny za pośrednictwem vim.org. VimDiff jest w porządku, ale kończy się niepowodzeniem, gdy linie są zamieniane, a następnie wartość jest bliższa niż łańcuch przed znakiem równości. W takim przypadku VimDiff pokaże różnicę w części przed znakiem równości, czego nie chcę.
ssollinger
0

Zawsze lubiłem Winmerge, bardzo konfigurowalny.

Dave
źródło
WinMerge jest świetny, ale nie radzi sobie zbyt dobrze z plikami ustawień (plików .ini). Jest lepszy niż niektóre inne (jak WinDiff), ale moje pytanie dotyczyło narzędzia, które konkretnie porównuje wartości w plikach .ini. WinMerge nie może tego zrobić.
ssollinger
1
Winmerge ma ustawienie do porównywania bloków tekstu, które zostały przeniesione i są podobne. Używam go do porównywania plików web.config, ale wydaje mi się, że są one nieco lepiej zorganizowane niż pliki ini.
Dave
Używam WinMerge i robię podstawienie wyrażenia regularnego na każdym pliku, aby usunąć liczby przed porównaniem ( [0-9]+=z =). Ale zawsze muszę odrzucać zmienione pliki. Szukam też lepszego rozwiązania.
djeidot