Jak mówi tytuł, jak mogę rekurencyjnie skopiować strukturę katalogów, ale dołączać tylko niektóre pliki. Np. Biorąc pod uwagę następującą strukturę katalogów:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
Pliki data.zip i info.txt może pojawić się wszędzie w strukturze katalogów. Jak mogę skopiować pełną strukturę katalogów, ale dołączać tylko pliki o nazwach data.zip i info.txt (wszystkie inne pliki należy zignorować)?
Wynikowa struktura katalogów powinna wyglądać następująco:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
*.zip
pracowałem dla mnie.Alternatywne rozwiązanie, które kopiuje jeden plik na raz i nie wymaga ROBOCOPY:
Instrukcja external for generuje każdą możliwą kombinację ścieżki podkatalogu
SOURCE_DIR
i nazwy wFILENAMES_TO_COPY
. Dla każdego istniejącego pliku wywoływana jest xcopy.FILE_INTERMEDIATE_DIR
przechowuje ścieżkę do podkatalogu pliku, wSOURCE_DIR
którym ma zostać utworzony wDEST_DIR
.źródło
set FILENAMES_TO_COPY=data.zip info.txt
powyższą linię naset FILENAMES_TO_COPY=*.jpg
set "SOURCE_DIR=C:\Origin Test"
iset "DEST_DIR=C:\Dest Test"
. Zwróć uwagę na umieszczenie podwójnych cudzysłowów.spróbuj przesłać wyjście find (tj. ścieżkę do pliku) do cpio
cpio sprawdza sygnaturę czasową na plikach docelowych - więc jest bezpieczny i szybki.
usuń -v dla szybszego działania, gdy już się do tego przyzwyczaisz.
źródło
Jeśli opcja Powershell jest dostępna, możesz to zrobić:
Główną wadą jest to, że kopiuje wszystkie foldery, nawet jeśli zostaną one puste, ponieważ żadne pliki nie pasują do określonego filtru. Więc możesz skończyć z drzewem pełnym pustych folderów, oprócz kilku folderów, które zawierają żądane pliki.
źródło
rm -r -ErrorAction:SilentlyContinue d:\destinationPath
przed skopiowaniem, aby to naprawić.Dzięki za poprzednie odpowiedzi. :)
Ten skrypt o nazwie „r4k4copy.cmd”:
Akceptuje zmienne „Source”, „Destination” i „FileName”. Może również kopiować tylko określone typy plików lub wybrane nazwy plików.
Wszelkie ulepszenia są mile widziane. :)
źródło
Tylko w przypadku funkcji find i cp:
źródło
Podobnie jak w rozwiązaniu Pauliusa, ale pliki, które Cię nie interesują, nie są kopiowane, a następnie usuwane:
źródło
Aby skopiować wszystkie pliki tekstowe do G: i zachować strukturę katalogów:
źródło
To tylko dwa proste polecenia, ale nie polecałbym tego, chyba że pliki, których NIE musisz kopiować, są małe. Dzieje się tak, ponieważ spowoduje to skopiowanie WSZYSTKICH plików, a następnie usunięcie plików, które nie są potrzebne w kopii.
Jasne, drugie polecenie jest trochę długie, ale działa!
Ponadto takie podejście nie wymaga pobierania i instalowania żadnych narzędzi innych firm (system Windows 2000+ BATCH ma do tego wystarczającą liczbę poleceń).
źródło
W Linuksie i innych systemach UNIX użycie
tar
polecenia ułatwiłoby to.Następnie podążałeś do celu i:
Oczywiście możesz potokować wyjście z pierwszej tar do drugiej, ale zobaczenie, jak działa w krokach, jest łatwiejsze do zrozumienia i wyjaśnienia. Brakuje mi niezbędnego cd / to / new / path / w następującym poleceniu - po prostu nie pamiętam, jak to zrobić teraz. Miejmy nadzieję, że ktoś inny może to dodać.
Tar (gnutar) jest również dostępny w systemie Windows, ale prawdopodobnie
xcopy
sam użyłbym tej metody na tej platformie.źródło
EDYTUJ: Jeśli chcesz zachować puste foldery (które po ponownym przeczytaniu postu wydają się) użyć / E zamiast / S.
źródło
Korzystając z interfejsu wiersza poleceń WinRAR, możesz skopiować nazwy plików i / lub typy plików do archiwum. Następnie możesz wyodrębnić to archiwum do dowolnej lokalizacji. Pozwala to zachować oryginalną strukturę plików.
Musiałem dodać brakujące pliki zdjęć albumów do telefonu komórkowego bez konieczności ponownego kopiowania samej muzyki. Na szczęście struktura katalogów na moim komputerze i telefonie komórkowym była taka sama!
Użyłem:
Spowodowało to utworzenie archiwum ze wszystkimi plikami Folder.jpg w odpowiednich podkatalogach.
Ta technika może być również używana do kopiowania typów plików. Jeśli wszystkie pliki miały różne nazwy, można było wyodrębnić wszystkie pliki do jednego katalogu. Dodatkowe parametry wiersza poleceń mogą archiwizować wiele typów plików.
Więcej informacji w tym bardzo pomocnym linku http://cects.com/using-the-winrar-command-line-tools-in-windows/
źródło
Dla tych, którzy używają Altap Salamander (menedżer plików z 2 panelami): w opcjach wyskakującego okienka Kopiuj, po prostu określ nazwy plików lub maski. Łatwo.
źródło
Nie mam problemu z wyrażeniami regularnymi, leniwym i niechętnym instalacjom, więc stworzyłem plik wsadowy, który tworzy katalog i kopiuje za pomocą waniliowych poleceń DOS. Wydaje mi się to pracochłonne, ale dla mnie szybsze niż ćwiczenie robocopy.
(.*)
zamień ciąg"\1"
i kliknij zamień wszystko(.*)
zastąp ciągmd qqq\1\nxcopy \1 qqq\1\n
i kliknij zamień wszystko\\([^\\^"]+)"\n
zastąp\\"\n
A:\src
iB:\dest
). Wyłącz wyrażenia regularne, wyszukajqqq"A:\src\
zastąpB:\dest\
i kliknij zamień wszystko.md utworzy zagnieżdżone katalogi. copy prawdopodobnie zachowałoby się identycznie jak xcopy w tym przykładzie. Możesz chcieć dodać / Y do xcopy, aby pominąć potwierdzenia nadpisania. Otrzymujesz taki plik wsadowy:
powtarzane dla każdego pliku z oryginalnej listy. Testowane na Win7.
źródło
Aby to zrobić za pomocą przeciągania i upuszczania, użyj winzip, istnieje opcja zachowania struktury katalogu. Po prostu utwórz nowy plik .zip na poziomie katalogu, który będzie Twoim głównym katalogiem, i przeciągnij do niego pliki.
źródło