używając wiersza poleceń, chciałbym skopiować jeden katalog do drugiego. Na przykład istnieje katalog C:/test
i C:/test2
.
Chciałbym skopiować C:/test
do, C:/test2
aby wynik byłC:/test2/test
Wszystko znalazłem dotąd skopiuje tylko pliki i foldery zawarte w C:/test
INTO C:/test2
, ale pozostawia się do katalogu nadrzędnego.
windows
command-line
Scott Chamberlain
źródło
źródło
Odpowiedzi:
Spróbuj skorzystać
XCOPY
z/E
przełącznika. Więcej informacji tutaj .Nie miałem dostępu do tej informacji z mojego mózgu w latach !
AKTUALIZACJA
Dokumentacja mówi, że kopiuje wszystkie pliki i podkatalogi z katalogu źródłowego (co oznacza, że katalog nadrzędny nie jest tworzony), więc trzeba by utworzyć
test
wC:\test2
pierwszym, a następnie użyćXCOPY
.źródło
robocopy /CREATE /COPYALL /DCOPY:T src dst
aby po prostu skopiować folder i puste pliki, ale zachować wszystkie znaczniki czasu i inne atrybuty.test
nadal musi zostać utworzony.md test
a potem używaniexcopy
było banalnie oczywiste.copy
folder nie tworzy nowego folderu, a następnie kopiuje do niego zawartość.Oto informacje na temat XCOPY [ 1 , 2 ]
źródło
Użyj ROBOCOPY, jeśli tworzysz skrypty zapasowe. xcopy zostało wycofane i prawdopodobnie zostanie wycofane z użycia w najbliższej przyszłości. robocopy może zrobić wszystko, co potrafi xcopy. Jest również bardziej elastyczny i niezawodny. Tworzenie skryptów za pomocą robocopy zapewni im ochronę na przyszłość.
Użyj robocopy, aby łatwo skopiować foldery. Polecenie robocopy zastępuje polecenie xcopy. Może szybko kopiować całe foldery bez martwienia się o zdefiniowanie zawartości. Na przykład, aby skopiować całą zawartość katalogu C: \ tools do nowego folderu D: \ backup \ tools, wprowadź następujące dane:
Modyfikator / e mówi robocopy, aby zawierał wszystkie podkatalogi. Obejmuje to puste foldery. robocopy automatycznie skopiuje ukryte i systemowe pliki. Stworzy nowe katalogi, jeśli nie istnieją w docelowej lokalizacji.
Utwórz kopię lustrzaną katalogu. Odbicie lustrzane katalogu doskonale nadaje się do tworzenia kopii zapasowych. Opcja kopii lustrzanej robocopy skopiuje całą zawartość ze źródła do miejsca docelowego. Następnie usunie wszystko w miejscu docelowym, które nie istnieje u źródła. Zapewnia to, że kopia zapasowa zawiera tylko najnowsze wersje plików. Na przykład, aby wykonać kopię lustrzaną C: \ Users \ My Documents do D: \ backup \ My Documents, wprowadź następujące dane: [4]
Ta funkcja zachowa wszystkie uprawnienia do oryginalnych plików.
Włącz ponowne uruchamianie. Możesz włączyć możliwość ponownego uruchomienia procesu w przypadku przerwania połączenia w połowie kopii.
Zaloguj się proces kopiowania. robocopy umożliwia utworzenie pliku dziennika. Może to pomóc w określeniu problemów lub wygenerowaniu archiwum tego, co zostało skopiowane.
Modyfikator / log + doda istniejący plik dziennika zamiast nadpisania go. Jeśli wolisz po prostu zastąpić stary plik dziennika, użyj /log:.txt.
źródło
Polecam robocopy nad xcopy , ponieważ ma dużo więcej opcji, w tym utrzymywanie znaczników czasu nienaruszone, które znajdują się niezbędne.
Robocopy należy dodać w systemie XP / 2003, ale jest to standard od wersji Vista.
Właściwie zwykle używam xxcopy , ale wersja 64-bitowa nie jest darmowa.
źródło
robocopy
to program Windows. Pytanie dotyczyło DOS-a.Na przykład, jeśli chcesz skopiować
E:
dane zH:
dysku na dysk (zewnętrzny dysk twardy) za pomocą wiersza polecenia lub ze środowiska poleceń xboot.źródło
Jeśli pierwotne pytanie jest tym, czego szukałem odpowiedzi, to ja, i oczywiście nikt powyżej, nie znalazłem jasnego rozwiązania.
To, czego szukam, to skopiowanie katalogu testowego do katalogu test2 bez konieczności ponownego wpisywania go. Coś jak
gdzie
d:\test2\test
nie istnieje przed kopią, ale później. Pozwoliłoby to zaoszczędzić na teście błędnego pisania po raz drugi na ścieżce docelowej. Powyższe polecenie skopiuje wszystkie pliki i katalogi do test2, ale nie utworzy katalogu testowego.Jak dotąd
to naprawdę jedyny sposób, w jaki udało mi się wykonać tę pracę. Ponownie, jeśli masz problemy z pisaniem, nie ma gwarancji, że katalog źródłowy i docelowy będą pasować.
Alternatywą jest to naprawić
Spowoduje to ustawienie katalogu docelowego w
mydir
zmiennej, a następnie wykorzystanie tej zmiennej zarówno w ścieżce źródłowej, jak i docelowej. Jeśli źle wpiszesz zmienną, albo pojawi się błąd, albo katalog docelowy prawdopodobnie będzie miał%
początek i koniec.Dłużej pisać, ale mniej szans na uzyskanie niewłaściwych nazw. Będą zauważalne.
źródło
xcopy /ievy c:\test d:\test2\test
aby zachować strukturę drzewa katalogów, wystarczyset mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
tylko 1 & , ponieważ wynik ustawienia wartości zawsze kończy się powodzeniem.Gdzie
SWITCHES
może być:Aby skopiować całą strukturę katalogów:
/hiev
Aby zastąpić pliki w miejscu docelowym (jeśli folder docelowy już istnieje):
/hievry
Aby zastąpić, a także skopiować za pomocą ACL + Attribute:
/hievxok
Najbardziej odpowiedni do twojego przypadku:
xcopy /hievry C:\test C:\test2\test
źródło
Miałem podobną sytuację, w której musiałem skopiować kilka folderów, w tym nazwy folderów, do miejsca docelowego i miałem nadzieję, że to pytanie oznaczone jako odpowiedź pomoże, ale tak naprawdę nie jest.
Po pierwsze, zdecydowanie są sytuacje, w których potrzebna byłaby ta umiejętność i natknąłem się na nią, gdy musiałem skopiować foldery z C: \ Windows \ Assembly \ GAC_MSIL. Eksplorator Windows odmawia pokazania tego folderu, więc musisz użyć wiersza polecenia.
Jeśli znasz folder GAC, wiesz, że nazwy folderów nie są trywialne i łatwo się pomylić, jeśli się pomylisz.
Dlatego wcześniejsze utworzenie katalogu nie jest tak naprawdę opcją - chyba że użyjesz skryptu - którego ostatecznie użyłem, ponieważ było to jedyne prawdziwe rozwiązanie.
Najpierw zrzuć foldery, które chcesz skopiować do pliku tymczasowego, zwykle jest to oparte na pewnym wzorze, np
Następnie zapętlić wpisy na zrzucie i skopiować do miejsca docelowego. Xcopy zajmie się utworzeniem folderu, jeśli zakończysz docelowy argument odwrotnym ukośnikiem (\)
Umieść oba te polecenia w pliku wsadowym i uruchom.
Teraz, jeśli tylko xcopy lub robocopy ma to wbudowane.
źródło
XCOPY SourceDrive: DestinationDrive: / S / E
źródło
/S /E
flagi)Doszłam do funkcjonalnej alternatywnej odpowiedzi na twoje pytanie.
Po pierwsze, użycie
FORFILES
z/S
parametrem nadaje dostęp do każdego podkataloguC:\test
.Po drugie, za pomocą
/C
parametru można uruchomić łańcuch poleceń za pomocą zmiennych natywnych, co umożliwia utworzenie identycznych katalogów w miejscu docelowym, a następnie skopiowanie do nich plików za pomocą dwóch struktur warunkowych.Pierwsza struktura warunkowa
@isdir==TRUE
(pamiętaj, aby używać wielkich liter), pozwala pobierać katalogi tylko ze źródła, a następnie tworzyć je w przeznaczeniuMKDIR [path]\@relpath
na końcu.Wreszcie, drugi upewnia się, że działa tylko z plikami
@isdir==FALSE
, a następnie polecenie KOPIUJ po prostu wykonuje zadanie, uzyskując dostęp do wszystkich plików za pomocą polecenia FORFILES, ustawiając[path]@relpath
jako miejsce docelowe, aby skopiować pliki do właśnie utworzonych katalogów.Mam nadzieję, że pomoże wszystkim tutaj.
źródło
To zrobi to z GUI, nie wiem jak to robią.
„... mały program pozwoli ci wybrać„ z katalogu ”i„ do katalogu ”, i rozpocznie kopiowanie TYLKO struktury katalogów.”
http://www.rjlsoftware.com/software/utility/treecopy/
źródło