Saya ingin menggunakan xcopy
untuk memindahkan, bukan menyalin file di jaringan dengan bendera Verifikasi. Saya tidak dapat menemukan saklar pada xcopy untuk memindahkan file, apakah ada yang xmove
bisa saya gunakan verify
?
Saat ini saya menggunakan xcopy /D /V
tetapi perlu menyingkirkan file di sumber hanya ketika diverifikasi file berhasil disalin ke tujuan.
/v
tidak menjamin bahwa file telah ditulis dengan benar: cache dan cache OS berarti bahwa file dalam cache tulis akan diambil dari sana sebelum berhasil dilakukan. Satu-satunya pilihan yang aman adalah membuat salinan dan menjadwalkan verifikasi dan menghapus di waktu mendatang. Secara heuristik saya akan mengatakan bahwa 5 menit sudah cukup, tetapi tidak ada aturan yang keras dan cepat: itu tergantung pada aktivitas disk dan ukuran cache (saya berbicara sebagai orang yang mengalami kegagalan tulis dalam cache).Jawaban:
Anda harus memeriksa
robocopy
, itu jauh lebih kuat daripadaxcopy
. Anda dapat dengan mudah memindahkan file dengan/MOV
atau/MOVE
.Untuk memindahkan file saja (hapus dari sumber setelah menyalin)
Untuk memindahkan file dan direktori (hapus dari sumber setelah menyalin)
http://ss64.com/nt/robocopy.html
sumber
verify
sejauh yang saya bisa lihat./MOVE : Move files and dirs (delete from source after copying)
. Jika tidak menyalin, itu tidak akan menghapus sumbernya.verify
. Saya tidak melihat apa pun di info robocopy yang benar-benar memverifikasi kedua filesizes untuk memastikan itu tidak hanya dipindahkan tetapi dipindahkan dengan benar.Anda bisa menggunakan file batch untuk menjalankan
Xcopy
perintah Anda dengan verifikasi, diikuti oleh pemeriksaan tingkat kesalahan yang dikembalikan oleh Xcopy untuk menentukan apakah file berhasil disalin atau tidak. Jika ya, hapus sumbernya.Dari dokumentasi Xcopy :
Batch contoh:
sumber
errorlevel
masih berfungsi jika saya melakukandir args && xcopy args >> logfile.txt
:? Atau akanerrorlevel
menjadi hasildir
?if errorlevel 0
SELALU memicu. Karena itu benar-benar memeriksaif errorlevel >= 0
sehingga Anda harus memeriksa kasus kesalahanif errorlevel 1 ( ... failure case ... ) else ( ... success case ... )
. Atau, jika Anda lebih suka gayaif not errorlevel 0 (... success case ... )
Atau, jika Anda lebih suka gayaif %ERRORLEVEL% EQU 0 ( ... success case ... )