Apa perintah baris perintah windows untuk menyalin file?

34

Apa perintah command prompt windows untuk menyalin file?

Saya perlu memindahkan file dari lokasi A ke lokasi B. Juga jika folder untuk lokasi B tidak ada, saya ingin membuatnya dibuat.

Saya ingin ini menjadi baris perintah sehingga saya bisa mengotomatiskannya.

Versi Windows adalah XP.

David Basarab
sumber
1
robocopyberfungsi dengan baik juga
Nixphoe

Jawaban:

44

Perintahnya xcopyadalah apa yang Anda cari. Contoh:

xcopy source destination /E /C /H /R /K /O /Y

Perintah di atas akan menyalin sumber ke tujuan, file dan direktori (termasuk yang kosong), tidak akan berhenti pada kesalahan, akan menyalin file tersembunyi dan sistem, akan menimpa file hanya baca, akan mempertahankan atribut dan informasi kepemilikan / ACL, dan akan menekan meminta untuk menimpa file tujuan yang ada.

/E    Copies directories and subdirectories, including empty ones.
      Same as /S /E. May be used to modify /T.
/C    Continues copying even if errors occur.
/H    Copies hidden and system files also.
/R    Overwrites read-only files.
/K    Copies attributes. Normal Xcopy will reset read-only attributes.
/O    Copies file ownership and ACL information.
/Y    Suppresses prompting to confirm you want to overwrite an
      existing destination file.

Untuk jenis info lebih lanjut xcopy /?dan baris perintah Anda.

KCD
sumber
2
Versi Windows mendatang termasuk RoboCopy. Dari Vista's XCOPY: "CATATAN: Xcopy sekarang sudah ditinggalkan, silakan gunakan Robocopy."
George Tsiokos
1
Cukup menarik, dua tahun kemudian setelah komentar Anda, George, xcopy masih 'memerintah dunia' pada Windows 7.
Perhatikan bahwa lingkungan Windows XP tertanam (POSReady 2009, dll) tidak dikirimkan dengan xcopy.
Epoc
Saya menyarankan edit untuk mencantumkan semua opsi ini ...! Jika Anda tidak mengotomatisasi /E /Hdan mungkin /K /Omembuat Anda jauh dengan beberapa petunjuk praktis
KCD
Jangan lupa /J, yang mencegah bug dengan XCopy saat menyalin file besar. Saya tidak yakin mengapa mereka tidak menjadikannya default ...
BlueRaja
8

Gunakan md untuk membuat folder (tidak apa-apa jika sudah ada)

Gunakan salin atau pindahkan untuk file, dan xcopy untuk folder

Dani
sumber
Bisakah Anda memberi saya contoh sintaks?
David Basarab
3
copy fred.txt copy_of_fred.txt
Adam Gibbins
1
salin /? akan memberi Anda teks bantuan, semacam halaman manual DOS.
Scottie T
2

Dalam file batch:

if not exists locationB\nul mkdir locationB
copy locationA\file locationB

if not existsmemeriksa parameter untuk melihat apakah ada, tetapi hanya berfungsi pada file. Untuk memeriksa keberadaan direktori , Anda perlu mencari 'file semu' yang disebut "nul" - memeriksa keberadaan file ini akan selalu kembali benar jika direktori tersebut ada.

Salinan baris salinan file bernama filedalam direktori locationAuntuk locationBdan nama file hal yang sama. Jika Anda ingin mengganti nama file secara bersamaan, Anda dapat melakukannya juga:

copy locationA\file locationB\newfilename
Graeme Perrow
sumber
2

Jika Anda ingin kemampuan untuk menyinkronkan salinan dan fitur-fitur canggih lainnya (abaikan folder tertentu, hanya sertakan wildcard tertentu) kemudian lihat robocopy. Termasuk dalam Vista dan seterusnya, opsional (dari alat kit sumber daya) di versi sebelumnya.

Richard
sumber
Untuk hal yang penting, saya akan menggunakan robocopy juga. Sepertinya saya ingat perbedaan kinerja yang sangat besar dibandingkan xcopy ketika menyinkronkan sejumlah besar file.
Kara Marfia
1

Gunakan ROBOCOPY jika Anda membuat skrip cadangan. xcopy telah ditinggalkan dan kemungkinan akan dihapus dari penggunaan dalam waktu dekat. robocopy dapat melakukan semua yang bisa xcopy. Ini juga lebih fleksibel dan dapat diandalkan. Membuat skrip dengan robocopy akan menjadi bukti di masa depan.


  1. Gunakan robocopy untuk menyalin folder dengan mudah. Perintah robocopy menggantikan perintah xcopy. Itu dapat dengan cepat menyalin seluruh folder tanpa harus khawatir tentang menentukan konten. Misalnya, untuk menyalin semua isi direktori C: \ tools ke folder baru D: \ backup \ tools, masukkan yang berikut ini:

    robocopy C:\tools D:\backup\tools /e
    

    Pengubah / e memberitahu robocopy untuk memasukkan semua subdirektori. Ini termasuk folder kosong. robocopy akan secara otomatis menyalin file tersembunyi dan sistem. Ini akan membuat direktori baru jika tidak ada di lokasi target.

  2. Mencerminkan sebuah direktori. Mencerminkan direktori sangat bagus untuk membuat cadangan. Opsi mirror dari robocopy akan menyalin semua konten dari sumber ke tujuan. Kemudian akan menghapus apa pun di tujuan yang tidak ada di sumbernya. Ini memastikan bahwa cadangan Anda hanya memiliki versi terbaru dari file Anda. Misalnya, untuk membuat mirror C: \ Users \ My Documents ke D: \ backup \ My Documents, masukkan yang berikut ini: [4]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    Fungsi ini akan mempertahankan semua izin file asli.

  3. Aktifkan memulai kembali. Anda mungkin ingin memasukkan kemampuan untuk memulai kembali proses seandainya koneksi terputus di tengah salinan.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. Catat proses penyalinan. robocopy memungkinkan Anda membuat file log. Ini dapat membantu Anda menemukan masalah atau menghasilkan arsip dari apa yang telah disalin.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    Modifier / log + akan menambahkan file log yang sudah ada alih-alih menimpanya. Jika Anda lebih suka menimpa file log yang lama, gunakan /log:.txt.

Program-Me-Rev
sumber
0

xcopy akan membuat struktur direktori untuk Anda. Triknya adalah dengan menggunakan opsi / I dan melemparkan tanda bintang di akhir nama file sehingga xcopy mengira Anda sedang menyalin beberapa file, jika tidak, Anda akan ditanya apakah nama target adalah nama file yang Anda inginkan, atau nama direktori yang Anda inginkan . Sebagai contoh.

xcopy /I c:\<SourceDir>\<SourceFile> c:\<TargetDirThatDoesNOTExist>

Saya juga melihat RoboCopy, tetapi Anda harus mendapatkannya dari kit sumber daya karena tidak ada di Windows sampai Vista.

WaldenL
sumber
-1

Perintah di atas membuat level direktori tambahan dengan nama file sumber. Jadi ... xcopy / I srcdir \ dir1 \ dir2 \ file1.txt * destdir \ dir1 \ dir2 \ file1.txt menghasilkan destdir \ dir1 \ dir2 \ file1.txt \ file1.txt

Jeff
sumber
1
Tidak masuk akal untuk menjawab pertanyaan lama seperti itu, yang sudah memiliki jawaban yang diterima dan tidak berkontribusi beberapa nilai tambah pada jawaban Anda.
alphamikevictor