Bir dizin yapısını dosya kopyalamadan nasıl kopyalayabilirim?


47

İçinde bir sürü alt klasör ve dosya bulunan bir klasör var. Klasör ve alt dizin yapısını kopyalamak için bir yolu var mı olmadan , içerdikleri dosyaları kopyalama cmd veya powershell kullanarak?

Yanıtlar:


44

Boş klasörleri de kopyalamak istiyorsanız.

xcopy C: \ Klasörler D: \ Klasörler / t / e


1
doğru, /eayrıca kullanılmalıdır.

1
XCOPY Powershell'de varsayılan olarak oluşturun ve mükemmel çalışıyor.
BenCes,

28

Evet. XCOPY

XCopy source {destination}  /t

örnek

xcopy C:\Folders D:\Folders /t

xcopy hakkında daha fazla bilgiyi burada bulabilirsiniz http://ss64.com/nt/xcopy.html


5
/eAyrıca boş klasörleri kopyalamak için eklemelisiniz

18

XCOPY hala çalışsa da, Windows Vista ve sonraki sürümlerinde daha fazla özelliğe sahip ROBOCOPY bulunur. Bir klasör ağacını (boş klasörler dahil) dosyalar olmadan kopyalamak için genel sözdizimi şöyledir:

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


3

Her dosyanın kopyalanmasını ve ardından silinmesini gerektirmeyen PowerShell yöntemi:

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

Veya daha kısaca:

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

Buradaki tek ilginç numara PSIsContainer, dizinler için doğru olan ancak dosyalar için geçerli olan özellik üzerindeki filtrelemektir .


Bu da süper hızlı!
Regmi

1

Ücretsiz, kullanışlı bir Windows aracı olan 47 klasör uygulamasına bakın. görüntü tanımını buraya girin

UYARI: Eski bağlantı ( http://47foldersapp.com/ ) şimdi (Kasım 2017) giyim reklamına yönlendiriyor. En son Internet Arşivi kopyası burada . Yazılım hala gibi ücretsiz indirme sitelerinden temin edilebilir bu bir .


0

Muhtemelen daha iyi bir çözüm var, ama şunu görürüm:

  • Her şeyi kopyalayın, ardından klasörleri bir komut dosyasıyla boşaltın.

  • Uzantı yoksa, her şeyi kopyalayacak bir komut dosyası hazırlayın. Klasörlerde uzantısı olmayan dosyalarınız olmadığı sürece, çalışmaması gerekir, çünkü çalışması gerekir. Klasörlerin uzantıları yoktur. Sözde kodda böyle görünecek bir şey:

open_directory ($ yol);
while ($ file = get_directory_content) {
if (boş (get_file_extension ($ file)))) {
copy_the_file ($ dosya, $ hedef);
}
}
close_directory;


Ne yazık ki, uzantısız dosyalarımız var. Kod depoları için .placeholders'den bazı belirli veri dosyalarına.
Ocak'ta

Ah. İyi. Belki bir if (bu bir klasör) şey o zaman. Ama ahh. Yukarıdaki xcopy olayı, o zaman sizin için doğru olanı gibi görünüyor. Değilse, bu durumda tüm klasörleri kopyalamak için 1. bir komut dosyası çalıştırabilirsiniz. Ya da başka birşey. Ama bu ... Uzun. xD
Ariane

0

Bunu yapmak için PowerShell kullanın. Klasörün Kopyasını Al ve ardından Remove-Item -Path "C:\test\*.*" -recurse



-1

Bildiğim kadarıyla, komut istemi ile yapmak istiyorsanız bu işlevi sağlayan üçüncü parti bir yazılım var. cmd'ye nasıl kopyaladığınızla ilgili ayrıntılı bilgi veren cmd'de help copy yazın .
kopyaladıktan sonra cmd üzerinden klasöre gidin ve komutu çalıştırın.

del *. *
hangi klasörleri sahip olmadığı için siler. karakter


3
Dosyaları siler tamam siler, ancak klasör adlarının nokta / nokta içeremediğini kim söylüyor?
Karan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.