menyalin semua isi folder ke folder lain menggunakan file batch?


130

Saya punya folder di C:\Folder1

Saya ingin menyalin semua konten Folder1ke lokasi lain,D:\Folder2

Bagaimana saya melakukan ini menggunakan file batch?

Jawaban:


163

xcopy.exeadalah solusinya di sini. Itu dibangun ke Windows.

xcopy /s c:\Folder1 d:\Folder2

Anda dapat menemukan lebih banyak opsi di http://www.computerhope.com/xcopyhlp.htm


3
Halo Hussain, saya sudah mencoba xcopy / sc: \ Folder1 d: \ Folder2 perintah dalam file batch, tetapi tidak berhasil untuk saya. tolong bantu saya lebih jauh.
SCM

Hai, Mungkin Anda tidak memiliki xcopy itu di komputer Anda .. Namun Anda dapat mengunduh file batch dari sini brothersoft.com/xcopy-177904.html
eHussain

4
Jika Anda ingin menyalin juga mengosongkan subdirektori, Anda harus menggunakan flag / s / e.
Ameba Spugnosa

Bukankah / e secara otomatis termasuk / s?
mghicks

14
xcopysudah usang dan memunculkan kesalahan 'Memori tidak cukup' saat nama file lebih panjang dari 254 karakter. Gunakan robocopysebagai gantinya: robocopy C:\Folder1 D:\Folder2 /COPYALL /E en.wikipedia.org/wiki/Robocopy
Marco Demaio

39

Jika Anda memiliki robocopy,

robocopy C:\Folder1 D:\Folder2 /COPYALL /E

jika tidak,

xcopy /e /v C:\Folder1 D:\Folder2

1
Jika itu menyalin isi Folder1, apa yang Anda lakukan jika Anda ingin menyalin folder itu sendiri?
Kyle Delaney

2
@KyleDelaney menyertakan nama folder sumber di tujuan, misalnya "xcopy / e / v C: \ Folder1 D: \ Folder2 \ Folder1 \"
mghicks

1
Perhatikan bahwa RoboCopy menggunakan \ sebagai karakter pelolosan (CMD tidak) , jika Anda mencoba dan meneruskan jalur yang dikutip dengan spasi dan garis miring akhir seperti "C:\My Folder\"Anda mungkin mendapatkan kejutan yang tidak menyenangkan. Saya sarankan membaca halaman SS64 dengan sangat hati-hati. Untuk perjalanan penuh ke lubang kelinci "apa itu karakter pelarian dalam CMD", lihat Melewati Kutipan Ganda dalam Batch Script .
jrh

21

jika Anda ingin menghapus pesan yang memberi tahu jika tujuan adalah file atau folder Anda hanya menambahkan garis miring:

xcopy /s c:\Folder1 d:\Folder2\


16

Saya melihat banyak jawaban yang menyarankan penggunaan xcopy. Tapi ini tidak perlu. Sebagaimana pertanyaan dengan jelas menyebutkan bahwa penulis menginginkan agar isi folder tidak disalin dalam kasus ini kita dapat -:

copy "C:\Folder1" *.*  "D:\Folder2"

Thats all xcopy dapat digunakan jika ada subdirektori diC:\Folder1


1
Ini tidak berfungsi jika folder yang Anda salin belum ada (saya percaya) sehingga Anda mungkin ingin menambahkanmd D:\Folder2
Mark Deven

2
copyPerintah saya (prompt perintah Windows 10) memberi tahu saya bahwa sintaksnya salah. Berikut ini adalah sintaks yang benar:copy "C:\Folder1\*.*" "D:\Folder2"
j00hi

4

RoboCopy tidak bekerja untuk saya, dan ada beberapa solusi bagus di sini, tetapi tidak ada yang menjelaskan sakelar XCopy dan apa yang mereka lakukan. Anda juga perlu mengutip jika jalur Anda memiliki spasi di dalamnya.

xcopy / i / e "C: \ temp \ folder 1" "C: \ temp \ folder 2"

Berikut ini dokumentasi dari Microsoft:

Dokumentasi XCopy MS

/s: Specifies to include subdirectories. Excludes empty subdirectories
/e: Copies all subdirectories, even if they are empty
/i: specifies the destination is a folder (Otherwise it prompts you)

2
@echo off
::Ask
echo Your Source Path:
set INPUT1=
set /P INPUT1=Type input: %=%

echo Your Destination Path:
set INPUT2=
set /P INPUT2=Type input: %=%

xcopy %INPUT1% %INPUT2% /y /s

2

Di PC saya, xcopy dan robocopy juga perlu path ke mereka, yaitu C: \ Windows \ System32 \ xcopy.exe

Itu sebabnya saya hanya menggunakan "copy": copy / y .... \ Folder1 \ File.txt .... \ Folder2 \


2
@echo off
xcopy /s C:\yourfile C:\anotherfile\

Beginilah caranya! Sederhana bukan?


-1

FYI ... jika Anda menggunakan TortoiseSVN dan Anda ingin membuat file batch sederhana untuk xcopy (atau mirror direktori) seluruh repositori ke lokasi "aman" secara berkala, maka ini adalah kode khusus yang mungkin ingin Anda gunakan. Ini menyalin melalui direktori / file tersembunyi, mempertahankan atribut read-only, dan semua subdirektori dan yang terbaik, tidak meminta input. Pastikan Anda menetapkan folder1 (repo aman) dan folder2 (repo dapat digunakan) dengan benar.

@echo off
echo "Setting variables..."
set folder1="Z:\Path\To\Backup\Repo\Directory"
set folder2="\\Path\To\Usable\Repo\Directory"
echo "Removing sandbox version..."
IF EXIST %folder1% (
    rmdir %folder1% /s /q
)
echo "Copying official repository into backup location..."
xcopy /e /i /v /h /k %folder2% %folder1%

Dan, itu orang-orang!

Tambahkan ke tugas terjadwal Anda dan jangan pernah melihat ke belakang.


-2
@echo off
:: variables
echo Backing up file
set /P source=Enter source folder:
set /P destination=Enter Destination folder:
set xcopy=xcopy /S/E/V/Q/F/H/I/N
%xcopy% %source% %destination%
echo files will be copy press enter to proceed
pause

2
Penjelasan kode Anda tidak hanya akan bermanfaat bagi penanya pertanyaan ini, tetapi juga orang-orang di masa depan yang menemukan ini dalam mencari solusi untuk masalah yang sama.
Josh Burgess

3
Anda memiliki beberapa bendera yang secara langsung bertentangan dengan bendera lainnya. /Smenyalin direktori dan subdirektori kecuali yang kosong, sedangkan /Edirektori dan subdirektori yang disalin termasuk yang kosong. /Qtidak menampilkan nama file saat menyalin, saat /Fmenampilkan sumber lengkap dan nama file tujuan saat menyalin.
SomethingDark

-2

Saya telah menulis file .bat untuk menyalin dan menempel file ke folder sementara dan membuatnya zip dan mentransfer ke titik pemasangan seseorang, Semoga ini bisa membantu,

    @echo off
    if not exist "C:\Temp Backup\" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"
    if not exist "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs" mkdir "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    xcopy /s/e/q "C:\Source" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
   Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\TELIUM"
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a  "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP\ZIP_Backup_Log_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%.rar" "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\Logs"
    NET USE \\IP\IPC$ /u:IP\username password
    ROBOCOPY "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%\ZIP"  "\\IP\Backup Folder" /z /MIR /unilog+:"C:\backup_log_%date:~-4,4%%date:~-10,2%%date:~-7,2%.log"
    NET USE \\172.20.10.103\IPC$ /D
    RMDIR /S /Q "C:\Temp Backup_%date:~-4,4%%date:~-10,2%%date:~-7,2%"
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.