Czy istnieje gotowy sposób na porównanie dwóch folderów w systemie Windows 7? Porównanie powinno pokazywać różnice pod względem folderów podkatalogów i plików podkatalogów.
@strangewalker czy potrafisz batem? A może wiesz, gdzie są one dostępne dla każdego? Powinieneś także zrobić z tego odpowiedź. To pomaga i będę głosować
happybuddha,
Odpowiedzi:
13
Nie jestem profesjonalistą PowerShell, ale dałoby ci to, które pliki i foldery istnieją w jednym folderze, ale nie w drugim.
Dziękuję za odpowiedź. Czy w systemie Windows 7 jest dostępna funkcja OOTB? Nie mogę zainstalować niczego na tym komputerze, nad którym pracuję.
happybuddha,
1
Narzędzia Cygwin można również uruchomić bez instalacji, choć wymaga to trochę pracy. Jeśli masz szczęście, jest też taka sama sytuacja, jak w przypadku funkcji „Porównaj”. Najprostszym rozwiązaniem jest zainstalowanie tego w domu i skopiowanie folderów na pendrive. Upewnij się, że nie robisz czegoś sprzecznego z lokalną regulacją sieci, nie mogłem bardzo długo spać dobrze, jeśli straciłeś pracę, ponieważ moje rady :)
peterh
1
@happybuddha Pobierz inny program, na przykład WinDiff, WinMerge lub podobny. Skopiuj go do udziału dostępnego dla tego urządzenia w sieci. Wykonaj to stamtąd. \\ myserver \ myshare \ windiff.exe localfolder1 localfolder2
Mark Allen
Oto kolejny głos na BeyondCompare.
Daniel R. Hicks
1
Możesz utworzyć plik wsadowy, który tworzy dwa tymczasowe pliki tekstowe zawierające strukturę katalogów, a następnie porównaj te pliki tymczasowe fc.
Coś w stylu (i dostosuj do preferencji):
dir %1 /s /b /a /ong > temp1.txt
dir %2 /s /b /a /ong > temp2.txt
fc temp1.txt temp2.txt
Argumenty dla polecenia dir są następujące:
/srekurencja w folderach potomnych
/bnie pokazuje szczegółów, możesz pominąć to
/ongsortowanie według rosnącej nazwy, najpierw katalogi
Pamiętaj również, aby dostosować argumenty do możliwych spacji
EDYCJA: jak zauważono w komentarzach, będziemy musieli pozbyć się prefiksu katalogu z pliku tekstowego listy plików. Można to zrobić za pomocą pliku wsadowego, takiego jak:
@echo off
setlocal EnableDelayedExpansion
for /F "delims==" %%a in (%1) do @(
set CURR_LINE=%%a
@echo !CURR_LINE:~%2!
)
endlocal
używany jako unprefix text_file.txt prefix_length. Na przykład unprefix temp1.txt 5wyświetli zawartość temp1.txt bez pierwszych 5 znaków w każdym wierszu.
dir /s /bzawsze wyświetla ścieżkę bezwzględną, więc każda linia będzie miała inny prefiks ścieżki, co spowoduje fczgłoszenie każdej linii. Będziesz potrzebował narzędzia do usunięcia przedrostka ścieżki przed porównaniem.
Adrian Pronk
ah tak, masz absolutną rację.
frozenkoi
1
Używam do tego FreeCommander (klon Norton Commander). Zapewnia funkcję „Synchronizuj foldery”, która pozwala porównać dwa foldery i opcjonalnie je zsynchronizować. Opcje porównania obejmują „Według CRC”, „Według daty”, „Według treści”, Podfoldery i wiele innych. Jest bardzo potężny i pomógł mi wiele razy doskonale zrobić to samo, o co prosiłeś.
Ogólnie FreeCommander jest bardzo potężnym narzędziem. Inną często używaną funkcją jest wyszukiwanie za pomocą plików i folderów.
Odpowiedzi:
Nie jestem profesjonalistą PowerShell, ale dałoby ci to, które pliki i foldery istnieją w jednym folderze, ale nie w drugim.
To daje:
Możesz oczywiście zrezygnować z filtrowania i uzyskać:
Nie wiem, czy to jest to, czego szukasz, ale może to da ci początek :)
Aby porównać zawartość, użyj:
compare-object (get-content a.text)(get-content b.txt)
i tak dalejźródło
Istnieje dobre narzędzie uniksowe o nazwie diff, które można zainstalować z Cygwina.
W przypadku wygranej istnieje narzędzie GUI o nazwie beyondCompare.
źródło
Możesz utworzyć plik wsadowy, który tworzy dwa tymczasowe pliki tekstowe zawierające strukturę katalogów, a następnie porównaj te pliki tymczasowe
fc
.Coś w stylu (i dostosuj do preferencji):
Argumenty dla polecenia dir są następujące:
/s
rekurencja w folderach potomnych/b
nie pokazuje szczegółów, możesz pominąć to/ong
sortowanie według rosnącej nazwy, najpierw katalogiPamiętaj również, aby dostosować argumenty do możliwych spacji
EDYCJA: jak zauważono w komentarzach, będziemy musieli pozbyć się prefiksu katalogu z pliku tekstowego listy plików. Można to zrobić za pomocą pliku wsadowego, takiego jak:
używany jako
unprefix text_file.txt prefix_length
. Na przykładunprefix temp1.txt 5
wyświetli zawartość temp1.txt bez pierwszych 5 znaków w każdym wierszu.źródło
dir /s /b
zawsze wyświetla ścieżkę bezwzględną, więc każda linia będzie miała inny prefiks ścieżki, co spowodujefc
zgłoszenie każdej linii. Będziesz potrzebował narzędzia do usunięcia przedrostka ścieżki przed porównaniem.Używam do tego FreeCommander (klon Norton Commander). Zapewnia funkcję „Synchronizuj foldery”, która pozwala porównać dwa foldery i opcjonalnie je zsynchronizować. Opcje porównania obejmują „Według CRC”, „Według daty”, „Według treści”, Podfoldery i wiele innych. Jest bardzo potężny i pomógł mi wiele razy doskonale zrobić to samo, o co prosiłeś.
Ogólnie FreeCommander jest bardzo potężnym narzędziem. Inną często używaną funkcją jest wyszukiwanie za pomocą plików i folderów.
źródło