Jak skopiować strukturę katalogów bez kopiowania plików?

47

Mam folder z dużą ilością podfolderów i plików. Czy istnieje sposób na skopiowanie struktury folderów i podfolderów bez kopiowania zawartych w nich plików przy użyciu cmd lub PowerShell?

Wieża
źródło

Odpowiedzi:

45

Jeśli chcesz również skopiować puste foldery.

xcopy C: \ Folders D: \ Folders / t / e

Michael Mantion
źródło
1
poprawne, /enależy również użyć.
1
XCOPY wbudowany w PowerShell domyślnie i działa idealnie.
BenCes
29

Tak. XCOPY

XCopy source {destination}  /t

przykład

xcopy C:\Folders D:\Folders /t

Więcej informacji na temat xcopy można znaleźć tutaj http://ss64.com/nt/xcopy.html

BroScience
źródło
5
Należy dodać, /eaby skopiować również puste foldery
18

Chociaż XCOPY nadal działa, Windows Vista i nowsze zawierają ROBOCOPY, który ma więcej funkcji. Ogólna składnia kopiowania drzewa folderów (w tym pustych folderów) bez plików to:

robocopy "A:\Source folder" "B:\Destination folder" /e /xf *

Teodor
źródło
3

Metoda PowerShell, która nie wymaga kopiowania każdego pliku, a następnie usuwania go:

Copy-Item -LiteralPath '.\source' -Destination 'C:\path\to\copy' -Recurse -Filter {PSIsContainer -eq $true}

Lub bardziej zwięźle:

copy .\source C:\path\to\copy -r -fi PSIsContainer

Jedyną interesującą sztuczką jest tutaj filtrowanie PSIsContainerwłaściwości, co dotyczy katalogów, ale nie plików.

Ben N.
źródło
To też jest super szybkie!
Regmi
1

Spójrz na aplikację 47folders, bezpłatne, poręczne narzędzie Windows, robi dokładnie to, czego potrzebujesz dzięki ładnemu GUI. wprowadź opis zdjęcia tutaj

OSTRZEŻENIE: dawny link ( http://47foldersapp.com/ ) teraz (listopad 2017 r.) Prowadzi do reklamy odzieży. Ostatnia dobra kopia archiwum internetowego jest tutaj . Oprogramowanie może być nadal dostępny z darmowych witryn pobierania, takie jak ten .

andymcgregor
źródło
0

Prawdopodobnie istnieje lepsze rozwiązanie, ale widziałbym te:

  • Skopiuj wszystko, a następnie opróżnij foldery za pomocą skryptu.

  • Stwórz skrypt, który skopiuje wszystko, jeśli nie ma rozszerzenia. O ile nie masz plików bez rozszerzenia w folderach, których nie powinieneś, to powinno działać, ponieważ, no cóż. Foldery nie mają rozszerzeń. Coś, co wyglądałoby tak w pseudokodzie:

open_directory ($ path);
while ($ file = get_directory_content) {
if (pusty (get_file_extension ($ file))) {
copy_the_file ($ file, $ destination);
}
}
close_directory;

Ariane
źródło
Niestety, mamy pliki bez rozszerzeń. Od .placeholder dla repozytoriów kodu, po niektóre określone pliki danych.
Gawron
O. Dobrze. Może więc jest coś, jeśli (to folder). Ale uhm. Wydaje się, że powyższa właściwość xcopy jest dla Ciebie odpowiednia. Jeśli nie jest, w takim przypadku możesz uruchomić skrypt, aby 1. skopiować wszystkie foldery i 2. opróżnić wszystkie foldery. Lub coś. Ale to jest ... Długie. xD
Ariane
0

Aby to zrobić, użyj programu PowerShell. Wykonaj kopię folderu, a następnie Remove-Item -Path "C:\test\*.*" -recurse

użytkownik1586957
źródło
-1

o ile wiem, istnieje oprogramowanie innych firm, które może zapewnić tę funkcjonalność, jeśli chcesz zrobić z wierszem polecenia, a następnie polecenie kopiowania jest dostępne. wpisz help copy w cmd, który zawiera szczegółowe informacje na temat kopiowania plików za pomocą cmd.
po skopiowaniu przejdź do folderu przez cmd i uruchom polecenie

del *. *
który usuwa pliki, ponieważ folderów nie ma. postać

Vishal
źródło
3
Usuwa pliki w porządku, ale kto powiedział, że nazwy folderów również nie mogą zawierać kropki / kropki?
Karan