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?

SCM
sumber

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

eHussain
sumber
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
mghicks
sumber
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\

ghiboz
sumber
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

Kingzel
sumber
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)
Yordania
sumber
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
Akash Dahiwelkar
sumber
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 \

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

Beginilah caranya! Sederhana bukan?

hampusma
sumber
-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.

TheKirkwoods
sumber
-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
Vaibhav Veralkar
sumber
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%"
Vinod Amarathunga
sumber