file transfer robocopy dan bukan folder

99

Saya mencoba menggunakan robocopyuntuk mentransfer satu file dari satu lokasi ke lokasi lain tetapi robocopysepertinya berpikir saya selalu menentukan folder. Berikut ini sebuah contoh:

robocopy "c:\transfer_this.txt" "z:\transferred.txt"

Tapi saya justru mendapatkan kesalahan ini:

2009/08/11 15:21:57 ERROR 123 (0x0000007B) Accessing Source Directory c:\transfer_this.txt\

(perhatikan \di akhir transfer_this.txt)

Tetapi jika saya memperlakukannya seperti seluruh folder:

robocopy "c:\folder" "z:\folder"

Ini bekerja tetapi saya harus mentransfer semua yang ada di folder.

Bagaimana saya bisa mentransfer satu file saja robocopy?

Kevin Panko
sumber
def copyFile(fromLocation,toLocation,big=False): print("copy file from " + fromLocation + " to " + toLocation) if big: iFind=fromLocation.rfind('\\') fromLocation1 = fromLocation[: (iFind+1)] fileName=fromLocation[iFind+1 :] toLocation1 = toLocation[:(toLocation.rfind('\\')+1)] strcmd="robocopy "+fromLocation1+" "+toLocation1+" "+fileName print(strcmd) os.system(strcmd) else: shutil.copy2(fromLocation,toLocation)
Gank

Jawaban:

129

Lihat: Robocopy /?

Penggunaan: Tujuan sumber ROBOCOPY [file [file] ...] [opsi]

robocopy c:\folder d:\folder transfer_this.txt
KPWINC
sumber
fwiw, setidaknya pada win2003: Mengutip jalur direktori tampaknya membuatnya tersendat.
samsmith
1
@smithmith Saya pernah melihatnya cegukan ketika Anda memiliki \ sebelum kutipan penutup (yaitu: ROBOCOPY "c: \ folder1 \" c: \ file folder2 tidak akan berfungsi tetapi: ROBOCOPY "c: \ folder1" c: \ folder2 file tidak. Saya berharap ini adalah teks yang lolos
Mike Goatly
1
Poin @MikeGoatly Excellent. Robocopy TIDAK suka mengikuti \. Ia ingin Anda memberi nama direktori sebagai "nama" dan tidak ingin menyiratkan dengan cara apa pun ia menerima apa pun selain direktori.
samsmith
19

Menurut artikel Wikipedia tentang Robocopy :

Mesin fotokopi folder, bukan mesin fotokopi file

Sintaks Robocopy sangat berbeda dari perintah penyalinan standar, karena hanya menerima nama folder sebagai argumen sumber dan tujuan. Nama file dan karakter wild-card (seperti *.*) bukan sumber atau tujuan argumen yang valid. File dapat dipilih atau dikecualikan menggunakan argumen penyaringan filespec opsional. Filespec hanya bisa merujuk ke nama file relatif ke folder yang sudah dipilih untuk menyalin. Nama jalur yang sepenuhnya memenuhi syarat tidak didukung.

Misalnya, untuk menyalin file foo.txtdari direktori c:\barke c:\baz, orang dapat menggunakan sintaks berikut:

robocopy c:\bar c:\baz foo.txt

Adrian De Leon
sumber
Satu hal yang saya perhatikan. Jika C: \ bar memiliki folder di dalamnya dan opsi / e telah ditambahkan. Ini akan membuat ulang semua folder tanpa file di dalamnya. Saya kira karena foo.txt bertindak seperti filter dan tidak dapat menemukan file apa pun di folder itu dan Anda menyimpan folder kosong. Itulah sebabnya folder kosong dibuat.
Donny V
1

Coba masukkan spasi sebelum tujuan, seperti ini:

robocopy "c:\transfer_this.txt" "z: \this.txt" 

perhatikan ruang setelah "folder" tujuan z:.

pengguna296831
sumber
3
Ini tidak berhasil untuk saya, saya harus mengikuti petunjuk @ KPWINC dan meninggalkan nama file keluar dari jalur sumber.
influent
3
Ini jawaban troll? Sudah mencoba dan tidak berfungsi (sepertinya juga tidak akan berhasil).
Pacerier
-4

robocopy T: \ F: \ Dopbox "Microsoft Office.zip" / MT: 128

Lembah
sumber
Nama file tujuan sumber Robocopy
Dale
6
Perintah tanpa penjelasan bukanlah jawaban yang berguna.
kasperd