File batch untuk menyalin direktori secara rekursif


123

Apakah ada cara untuk menyalin direktori secara rekursif di dalam file .bat? Jika demikian, sebuah contoh akan bagus. Terima kasih.


2
maksudmu xcopy / s? atau robocopy yang lebih canggih?
rene

Ini mungkin bisa membantu Anda, meskipun ini menghapus Anda dapat dengan mudah mengubah ke copy daniweb.com/web-development/threads/61479/…
Georges Chitiga

Jawaban:


178

Lihat xcopy , yang akan menyalin file dan subdirektori secara rekursif.

Ada contoh, 2/3 halaman. Penggunaan tertentu adalah:

Untuk menyalin semua file dan subdirektori (termasuk subdirektori kosong) dari drive A ke drive B, ketik:

xcopy a: b: /s /e


16
Anda mungkin ingin flag / y disertakan juga ke "Suppresses prompt untuk mengonfirmasi bahwa Anda ingin menimpa file tujuan yang sudah ada."
Matthew Lock

11
'xcopy' bukanlah ide yang baik karena terkenal dengan kesalahan memori yang tidak mencukupi . Coba gunakan 'robocopy'
Rahul

6
@Rahul Hmm benarkah? Aku belum pernah melihat itu, tapi xcopy telah pasti sudah ada sejak zaman kegelapan. Anda mungkin bisa melakukannya Copy-Item -Recursedi PowerShell juga.
lc.

1
Sayangnya ya, perilaku ini sangat umum :). Jika telah melihat ini terjadi berulang kali terutama jika Anda ingin menyalin data dalam jumlah besar seperti pertunjukan data.
Rahul

10
Ini mengatakan bahwa xcopy sudah usang dan robocopy harus digunakan.
Mike HR

71

Setelah membaca komentar jawaban yang diterima, saya mencoba perintah robocopy , yang berfungsi untuk saya (menggunakan command prompt standar dari Windows 7 64 bits SP 1):

robocopy source_dir dest_dir /s /e

5
Tidak pernah tahu 'robocopy' adalah perintah bawaan di windows 7! Terima kasih atas jawabannya, sangat membantu dan kuat :)
Anmol Saraf

5
Tidak /Emenyiratkan /S? copy subdirectories, including Empty ones.
mbomb007

4
Hmmm /Sdan /Esepertinya menyiratkan hal-hal yang berlawanan menurut /?bantuan robocopy - s adalah "tidak kosong" e adalah "yang kosong". Saya pikir Anda harus memilih satu saja.
Stuart Brock

1
Bagi sebagian besar pengguna, menurut saya itu cukup untuk melakukan / e (menyertakan direktori kosong).
phsource

3
Perhatikan bahwa robocopymengembalikan kode keluar 1 jika satu atau lebih file berhasil disalin.
dougnorton

15

Anda dapat menulis algoritme rekursif dalam Batch yang memberi Anda kontrol tepat atas apa yang Anda lakukan di setiap subdirektori bertingkat:

@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

Windows Batch File Looping Melalui Direktori untuk Memproses File?


4
Ide bagus, tetapi bukankah program Anda menyalin semua file dari direktori sumber ke satu direktori tujuan tanpa mempertahankan hierarki folder?
Jean-Francois T.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.