Ini kelihatannya cukup sederhana dan mungkin saya hanya mengabaikan flag yang tepat , tetapi bagaimana saya, dalam satu perintah, menyalin file dari satu direktori ke direktori lain dan mengganti namanya di direktori tujuan? Inilah perintah saya:
if exist "bin\development\whee.config.example"
if not exist "TestConnectionExternal\bin\Debug\whee.config"
xcopy "bin\development\whee.config.example"
"TestConnectionExternal\bin\Debug\whee.config"
Ini meminta saya dengan yang berikut setiap saat:
Apakah TestConnectionExternal \ bin \ Debug \ whee.config menentukan nama file atau nama direktori pada target (F = file, D = direktori)?
Saya ingin menekan prompt ini; jawabannya selalu F
.
command-line
command-prompt
xcopy
Kapal Sarah
sumber
sumber
cp
tidak b ** t untuk menyalin file / dir sekitar!Jawaban:
Jangan gunakan
xcopy
, gunakancopy
saja, itu tidak memiliki masalah ini.xcopy
umumnya digunakan ketika melakukan salinan berulang beberapa file / folder, atau ketika Anda membutuhkan fitur verifikasi / mendorong yang ditawarkannya. Untuk salinan file tunggal,copy
perintah itu berfungsi dengan baik.sumber
copy
tidak akan menyalin file jika seluruh struktur direktori untuk tujuan belum ada.xcopy
secara otomatis akan membuat semua direktori yang dibutuhkan.xcopy
dan bukan hanyacopy
.saya menggunakan
untuk menyiasatinya.
sumber
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
untuk saya. Anda brilianPilihan lain adalah menggunakan wildcard tujuan. Perhatikan bahwa ini hanya berfungsi jika nama file sumber dan tujuan akan sama, jadi sementara ini tidak menyelesaikan contoh spesifik OP, saya pikir itu layak untuk dibagikan.
Sebagai contoh:
akan membuat salinan file "whee.config.example" di direktori tujuan tanpa meminta file atau direktori.
Pembaruan : Seperti yang disebutkan oleh @chapluck:
Anda bisa berubah
"* "
menjadi"[newFileName].*"
. Itu tetap ekstensi file tetapi memungkinkan untuk mengganti nama. Atau lebih banyak peretasan:"[newFileName].[newExt]*"
untuk mengubah ekstensisumber
Ada semacam fitur tidak berdokumen di XCOPY. kamu bisa menggunakan:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
Saya mengujinya hari ini. :-)
sumber
whee.config.example
folder tujuan, karenawhee.config*
cocokwhee.config.example
.b.txtxt
, dan kemudian saya meluncurkan perintahxcopy a.txt b.txt* /F /Y
dan filea.txt
tersebut telah disalin keb.txt
, seperti yang diharapkan. Selain itu, saat menggunakan/F /Y
sakelar, salinan aktual ditampilkan di layar, persis seperti yang diharapkan.Cukup buka http://technet.microsoft.com/en-us/library/bb491035.aspx
Inilah yang menjadi MASALAH UTAMA "... Jika Tujuan tidak berisi direktori yang ada dan tidak diakhiri dengan garis miring terbalik (), pesan berikut ini muncul: ...
Apakah tujuan menentukan nama file atau nama direktori pada target (F = file, D = direktori)?
Anda dapat menekan pesan ini dengan menggunakan opsi baris perintah / i, yang menyebabkan xcopy berasumsi bahwa tujuan adalah direktori jika sumbernya lebih dari satu file atau direktori.
Butuh waktu beberapa saat, tetapi yang diperlukan hanyalah RTFM.
sumber
Jadi, ada perbaikan sederhana untuk ini. Memang memang aneh, tapi berhasil. xcopy tidak akan meminta untuk mengetahui apakah tujuan adalah direktori atau file JIKA file baru (nama file) sudah ada. Jika Anda mendahului perintah xcopy Anda dengan gema sederhana ke nama file baru, itu akan menimpa file kosong. Contoh
sumber
Ini dari jawaban Bills.
Agar benar-benar jelas bagi orang lain.
Jika Anda menyalin SATU file dari satu tempat ke tempat lain DAN Anda ingin struktur direktori lengkap dibuat, gunakan perintah berikut:
Ya, beri backslash di akhir nama file dan TIDAK akan menanyakan Anda apakah itu file atau direktori. Karena hanya ada SATU file di sumber, itu akan menganggap itu file.
sumber
dir "C:\Target Data\\Images\2013\08\12"
09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
sumber
Saya memiliki masalah yang sama dan kedua robocopy dan xcopy tidak membantu, karena saya ingin menekan komentar dan menggunakan nama file tujuan yang berbeda. saya menemukan
bekerja sesuai kebutuhan saya.
sumber
Kembali ke pertanyaan awal:
bisa dilakukan dengan dua perintah mis:
Dengan hanya menambahkan "\ .." ke jalur file tujuan direktori tujuan dibuat jika belum ada. Pada kasus ini
yang merupakan direktori induk dari direktori yang tidak ada
Setidaknya untuk Win7 mkdir tidak peduli jika direktori
benar-benar ada.
sumber
XCOPY dengan * di akhir target untuk menyalin file apakah ada di tujuan XCOPY dengan \ di akhir target untuk menyalin folder dan konten apakah ada atau tidak di tujuan
kalau tidak
RoboForm SOURCE DEST FILE untuk file RoboForm SOURCE DEST untuk folder
sumber
Saya sarankan
robocopy
daripadacopy
atauxcopy
. Digunakan sebagai perintah atau dalam GUI pada klien atau server. Toleransi jaringan berhenti dan Anda dapat memilih untuk mengabaikan atribut file saat menyalin salinan berdasarkan atribut file. Oh, dan itu mendukung mesin multi-core sehingga file disalin lebih cepat dalam "paralel" satu sama lain, bukan secara berurutan.robocopy
dapat ditemukan di MS TechNet.sumber
Hal yang benar untuk dilakukan jika Anda ingin menyalin file dan mengubah namanya di tujuan adalah:
Dan itu akan bekerja dengan baik
sumber
Untuk menduplikasi file besar, xopy with / J switch adalah pilihan yang baik. Dalam hal ini, cukup pipa F untuk file atau D untuk direktori. Anda juga dapat menyimpan pekerjaan dalam array untuk referensi di masa mendatang. Sebagai contoh:
Terima kasih kepada Chand dengan sedikit modifikasi: https://stackoverflow.com/users/3705330/chand
sumber
Gunakan salin alih-alih xcopy saat menyalin file.
misal salin "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug \ whee.config"
sumber
copy /Y source destination
untuk meneruskan konfirmasi timpa.Karena Anda tidak benar-benar mengubah nama file, Anda dapat mengambil nama file dari tujuan dan tidak akan ada pertanyaan.
Pendekatan ini berfungsi dengan baik ketika direktori tujuan dijamin ada, dan ketika sumbernya bisa berupa file atau direktori.
sumber
Debug
direktori mungkin dijamin ada.Mengatasi Masalah, gunakan ReName ... dan Beri Nama Cryptic Name, kemudian Ubah Nama menjadi Proper Name
C:
CD "C: \ Users \ Public \ Documents \ My Web Sites \ AngelFire ~ Zoe \"
XCopy / D / I / V / Y "C: \ Users \ Public \ Documents \ My Web Sites \ HostGator ~ ZoeBeans \ cop.htm"
Ren "cop.htm" "christ-our-passover.htm"
sumber
xcopy akan memungkinkan Anda untuk menyalin satu file ke folder tertentu itu hanya tidak akan memungkinkan Anda untuk menentukan nama tujuan. Jika Anda memerlukan nama tujuan, ganti nama saja sebelum Anda menyalinnya.
ren "bin \ development \ whee.config.example" whee.config
xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"
sumber
ren "bin\development\whee.config" whee.config.example
Tempatkan tanda bintang (*) di ujung jalur tujuan untuk melewati sengketa D dan F.
Contoh:
sumber
Apakah xxxxxxxxxxxx menentukan nama file atau nama direktori pada target
sumber
Saya bertemu masalah yang sama ketika mencoba menyalin file dengan nama baru hanya jika file tidak ada di tujuan atau ada (dengan nama baru), tetapi lebih tua. Solusinya adalah menambahkan
*
char di akhir nama file tujuan. Contoh:sumber
Anda tidak dapat menentukan bahwa itu selalu berupa file. Jika Anda tidak membutuhkan fitur lain dari xcopy, mengapa tidak menggunakan fitur biasa saja
copy
?sumber
copy
, sebagai perintah internal, tidak mengatur ErrorLevel. Jika Anda ingin dapat memengaruhi jalur file batch jika terjadi kesalahan penyalinan, Anda perlu menggunakannyaXCOPY
.