tập tin chuyển robocopy và không thư mục


99

Tôi đang cố gắng sử dụng robocopyđể chuyển một tập tin từ vị trí này sang vị trí khác nhưng robocopydường như tôi nghĩ rằng tôi luôn chỉ định một thư mục. Đây là một ví dụ:

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

Nhưng tôi nhận được lỗi này thay thế:

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

(lưu ý \ở cuối transfer_this.txt)

Nhưng nếu tôi coi nó như toàn bộ thư mục:

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

Nó hoạt động nhưng sau đó tôi phải chuyển tất cả mọi thứ trong thư mục.

Làm thế nào tôi chỉ có thể chuyển một tập tin duy nhất với 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

Câu trả lời:


129

Xem: Robocopy /?

Cách sử dụng: ROBOCOPY nguồn đích [tệp [tệp] ...] [tùy chọn]

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

fwiw, ít nhất là trên win2003: Trích dẫn đường dẫn thư mục dường như làm cho nó bị trục trặc.
samsmith

1
@sammart Tôi không nghĩ đó là một thứ thoát văn bản
Mike Goatly

1
@MikeGoatly Điểm tuyệt vời. Robocopy KHÔNG thích trailing \. Nó muốn bạn đặt tên cho các thư mục là "tên" và không muốn ám chỉ theo bất kỳ cách nào mà nó chấp nhận bất cứ thứ gì ngoài thư mục.
samsmith

19

Theo bài viết trên Wikipedia về Robocopy :

Máy photocopy thư mục, không phải máy photocopy

Cú pháp Robocopy khác biệt rõ rệt với các lệnh sao chép tiêu chuẩn, vì nó chỉ chấp nhận tên thư mục làm đối số nguồn và đích của nó. Tên tệp và ký tự đại diện (chẳng hạn *.*) không phải là đối số nguồn hoặc đích hợp lệ. Các tệp có thể được chọn hoặc loại trừ bằng cách sử dụng đối số lọc tệp tùy chọn. Filespecs chỉ có thể tham chiếu tên tệp liên quan đến các thư mục đã được chọn để sao chép. Tên đường dẫn đủ điều kiện không được hỗ trợ.

Ví dụ: để sao chép tệp foo.txttừ thư mục c:\barvào c:\baz, người ta có thể sử dụng cú pháp sau:

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


Một điều tôi nhận thấy. Nếu thanh C: \ có bất kỳ thư mục nào trong đó và tùy chọn / e đã được thêm. Nó sẽ tạo lại tất cả các thư mục không có tệp trong đó. Tôi đoán vì foo.txt hoạt động như một bộ lọc và không thể tìm thấy bất kỳ tệp nào trong các thư mục đó và việc bạn giữ các thư mục trống. Đó là lý do tại sao các thư mục trống được tạo ra.
Donny V

1

Hãy thử chèn một khoảng trắng trước đích, như thế này:

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

chú ý không gian sau "thư mục" đích z:.


3
Điều này không hiệu quả với tôi, tôi đã phải làm theo hướng dẫn của @ KPWINC và để tên tệp ra khỏi đường dẫn nguồn.
ảnh hưởng

3
Đây là một câu trả lời troll? Đã thử và không hoạt động (cũng có vẻ như nó sẽ không hoạt động).
Pacerier

-4

bản sao Q: \ F: \ Dopbox "Microsoft Office.zip" / MT: 128


Tên tệp đích của Robocopy
Dale

6
Một lệnh mà không có lời giải thích không phải là một câu trả lời hữu ích.
kasperd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.