Dizinleri yinelemeli olarak kopyalamak için toplu iş dosyası


Yanıtlar:


178

Dosyaları ve alt dizinleri yinelemeli olarak kopyalayacak xcopy'e bakın .

Sayfanın 2 / 3'ü kadar örnekler var. Özel kullanım şudur:

Tüm dosyaları ve alt dizinleri (boş alt dizinler dahil) A sürücüsünden B sürücüsüne kopyalamak için şunu yazın:

xcopy a: b: /s /e


16
Muhtemelen / y bayrağının "Var olan bir hedef dosyanın üzerine yazmak istediğinizi onaylamanızı istemesini bastırır" için de dahil edilmesini istiyorsunuz.
Matthew Lock

11
"xcopy" iyi bir fikir değildir çünkü yetersiz bellek hatasıyla ünlüdür . 'Robocopy' kullanmayı deneyin
Rahul

6
@Rahul Hmm gerçekten? Ben hiç görmedim ama xcopy gelmiştir kesinlikle karanlık çağlardan beri buralarda. Bunun yerine muhtemelen Copy-Item -RecursePowerShell'de de yapabilirsiniz.
lc.

1
Ne yazık ki evet, bu davranış çok yaygındır :). Bunun tekrarlayan bir şekilde gerçekleştiğini gördüyseniz, özellikle de veriler gibi büyük miktarda veriyi kopyalamak istiyorsanız.
Rahul

10
Bu , xcopy'nin kullanımdan kaldırıldığını ve robocopy'nin kullanılması gerektiğini söylüyor.
Mike HR

71

Kabul edilen cevabın yorumlarını okuduktan sonra, benim için çalışan robocopy komutunu denedim (Windows 7 64 bit SP 1'den standart komut istemini kullanarak):

robocopy source_dir dest_dir /s /e

5
'Robocopy'nin Windows 7'de yerleşik bir komut olduğunu asla bilmiyordum! Cevabınız için teşekkürler, çok yardımcı ve güçlü :)
Anmol Saraf

5
Does not /Eima /S? copy subdirectories, including Empty ones.
mbomb007

4
Hmmm /Sve /Erobocopy /?yardımına göre zıt şeyleri ima ediyor gibi görünüyor - s "boş olanlar değil" e "boş olanlar" dır. Bence sadece birini seçmelisin.
Stuart Brock

1
Çoğu kullanıcı için / e yapmanın yeterli olduğunu düşünüyorum (boş dizinleri dahil edin).
phsource

3
robocopyBir veya daha fazla dosya başarıyla kopyalandığında 1 çıkış kodunu döndürdüğünü unutmayın .
dougnorton

15

Batch'te, her iç içe geçmiş alt dizinde ne yaptığınızı tam olarak kontrol etmenizi sağlayan yinelemeli bir algoritma yazabilirsiniz:

@echo off
call :treeProcess
goto :eof

:treeProcess
rem Do whatever you want here over the files of this subdir, for example:
copy *.* C:\dest\dir
for /D %%d in (*) do (
    cd %%d
    call :treeProcess
    cd ..
)
exit /b

Dosyaları İşlemek için Dizinler Üzerinden Windows Toplu Dosya Döngüsü mü?


4
Harika bir fikir ancak programınız, klasör hiyerarşisini korumadan tüm dosyaları kaynak dizinlerden tek bir hedef dizine kopyalamıyor mu?
Jean-Francois T.
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.