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.