ไฟล์โอน robocopy ไม่ใช่โฟลเดอร์


99

ฉันพยายามใช้robocopyเพื่อถ่ายโอนไฟล์เดียวจากที่หนึ่งไปอีกที่หนึ่ง แต่robocopyดูเหมือนว่าฉันคิดว่าจะระบุโฟลเดอร์เสมอ นี่คือตัวอย่าง:

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

แต่ฉันได้รับข้อผิดพลาดนี้แทน:

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

(สังเกต\ที่ท้ายtransfer_this.txt)

แต่ถ้าฉันถือว่ามันเหมือนโฟลเดอร์ทั้งหมด:

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

มันใช้งานได้ แต่หลังจากนั้นฉันต้องถ่ายโอนทุกอย่างในโฟลเดอร์

ฉันจะถ่ายโอนไฟล์เดียวได้robocopyอย่างไร


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

คำตอบ:


129

ดู: Robocopy /?

การใช้งาน: ROBOCOPY ต้นทางปลายทาง [ไฟล์ [ไฟล์] ... ] [ตัวเลือก]

robocopy c:\folder d:\folder transfer_this.txt

fwiw อย่างน้อยใน win2003: การอ้างถึงเส้นทางไดเรกทอรีดูเหมือนจะทำให้เกิดอาการสะอึก
samsmith

1
@samsmith ฉันเคยเห็นอาการสะอึกเมื่อคุณมี \ ก่อนปิดคำพูด (เช่น: ROBOCOPY "c: \ folder1 \" c: \ folder2 ไฟล์จะไม่ทำงาน แต่: ROBOCOPY "c: \ folder1" c: \ folder2 ไฟล์ทำฉันคาดหวังว่ามันจะเป็นข้อความที่หนีได้
Mike Goatly

1
@MikeGoatly เป็นเลิศ Robocopy ไม่ชอบการติดตาม \ มันต้องการให้คุณตั้งชื่อไดเรกทอรีเป็น "names" และไม่ต้องการบอกเป็นนัย ๆ ว่ายอมรับสิ่งอื่นใดนอกจากสารบบ
samsmith

19

ตามบทความ Wikipedia เกี่ยวกับ Robocopy :

เครื่องถ่ายเอกสารโฟลเดอร์ไม่ใช่เครื่องถ่ายเอกสารไฟล์

Robocopy ไวยากรณ์แตกต่างอย่างชัดเจนจากคำสั่งคัดลอกมาตรฐานเนื่องจากยอมรับเฉพาะชื่อโฟลเดอร์เป็นอาร์กิวเมนต์ต้นทางและปลายทาง ชื่อไฟล์และอักขระไวด์การ์ด (เช่น*.*)ไม่ใช่อาร์กิวเมนต์ที่มาหรือปลายทางที่ถูกต้อง อาจเลือกหรือแยกไฟล์โดยใช้อาร์กิวเมนต์ตัวกรอง filespec ที่เป็นตัวเลือก Filespecs สามารถอ้างถึงชื่อไฟล์ที่สัมพันธ์กับโฟลเดอร์ที่เลือกไว้สำหรับการคัดลอก ไม่รองรับชื่อเส้นทางที่ผ่านการรับรอง

ยกตัวอย่างเช่นในการคัดลอกไฟล์foo.txtจากไดเรกทอรีc:\barไปc:\bazหนึ่งสามารถใช้ไวยากรณ์ต่อไปนี้:

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


สิ่งหนึ่งที่ฉันสังเกตเห็น หาก C: \ bar มีโฟลเดอร์ใด ๆ อยู่ภายในโฟลเดอร์และมีการเพิ่มตัวเลือก / e มันจะสร้างโฟลเดอร์ทั้งหมดโดยไม่มีไฟล์อยู่ในนั้น ฉันเดาว่าเนื่องจาก foo.txt ทำหน้าที่เหมือนตัวกรองและไม่สามารถค้นหาไฟล์ใด ๆ ในโฟลเดอร์เหล่านั้นและทำให้โฟลเดอร์ว่างของคุณ นั่นเป็นสาเหตุที่สร้างโฟลเดอร์ว่าง
Donny V

1

ลองแทรกช่องว่างข้างหน้าปลายทางเช่นนี้

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

ทราบพื้นที่หลังจากปลายทาง z:"โฟลเดอร์"


3
สิ่งนี้ไม่ได้ผลสำหรับฉันฉันต้องทำตามคำแนะนำของ @ KPWINC และปล่อยชื่อไฟล์ออกจากเส้นทางต้นทาง
มีอิทธิพล

3
นี่คือคำตอบหมุนรอบ? พยายามและไม่ทำงาน (และดูเหมือนว่าจะไม่ทำงาน)
Pacerier

-4

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


ชื่อไฟล์ปลายทางของ Robocopy
Dale

6
คำสั่งที่ไม่มีคำอธิบายไม่ใช่คำตอบที่เป็นประโยชน์
kasperd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.