2008-10-10 27 views
48

Theo mặc định, sao chép từ dấu nhắc lệnh sẽ nhắc bạn ghi đè lên các tệp đã tồn tại ở vị trí đích.Làm thế nào để nói không với tất cả "bạn muốn ghi đè lên" nhắc nhở trong một bản sao tập tin thực thi?

Bạn có thể thêm "/ Y" để nói thay thế "Có cho tất cả".

Nhưng làm cách nào bạn có thể nói "Không cho tất cả"?

Nói cách khác, tôi muốn sao chép mọi thứ từ một thư mục có không đã tồn tại trong mục tiêu.

Điều gần nhất tôi thấy là đối số XCOPY chỉ sao chép mọi thứ sau một ngày giờ cụ thể.

Trả lời

65

Trừ khi có trường hợp bạn muốn không muốn sao chép các tệp hiện có trong nguồn đã thay đổi kể từ bản sao cuối cùng, tại sao không sử dụng XCOPY với/D mà không chỉ định ngày?

5

Tôi mong đợi xxcopyoption cho điều đó.

Bingo:

http://www.xxcopy.com/xxcopy27.htm#tag_231

2.3 By comparison with the file in destination 

    The switches in this group select files based on the 
    comparison between the files in the source and those in 
    the destination. They are often used for periodic backup 
    and directory synchronization purposes. These switches 
    were originally created as variations of directory backup. 
    They are also convenient for selecting files for deletion. 

2.3.1 by Presence/Absence 

    The /BB and /U switches are the two switches which select 
    files by the pure presence or absence as the criteria. 
    Other switches in the this group (Group 2.3) are also 
    affected by the file in the destination, but for a 
    particular characteristics for comparison's sake. 

    /BB Selects files that are present in source but not in destination. 
    /U Selects files that are present in both source and destination. 

-Adam

2

Tùy thuộc vào kích thước và số lượng các tập tin được sao chép, bạn có thể sao chép các thư mục đích so với nguồn đầu tiên với "yes cho tất cả ", sau đó làm bản gốc bạn đang làm, cũng với" có cho tất cả "thiết lập. Điều đó sẽ cho bạn kết quả tương tự.

+0

Điều đó sẽ cho kết quả tương tự trong đích, nhưng sẽ thay đổi nguồn. – Liam

+0

Đúng, lời giải thích của bạn tốt hơn, tôi sẽ chỉ upvote nó;) – tloach

+0

Sweet :) Tôi yêu khi các vấn đề có thể được giải quyết mà không cần cài đặt thêm phần mềm :) – Liam

11

Đây là giải pháp thay thế. Nếu bạn muốn sao chép tất cả mọi thứ từ A mà không thực hiện đã tồn tại trong B:

Sao chép A đến một thư mục mới C. Sao chép B đến C, ghi đè lên bất cứ điều gì mà trùng với A. Sao chép C đến B.

+0

chỉ ... tuyệt vời !! – ajax333221

+0

quá phức tạp ... vẫn +1 từ tôi. – Jus12

6

tôi sử dụng XCOPY với các thông số sau để sao chép cụm NET:

/D /Y /R /H 

/D:m-d-y - Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time. 

/Y - Suppresses prompting to confirm you want to overwrite an existing destination file. 

/R - Overwrites read-only files. 

/H - Copies hidden and system files also. 
21

Bạn có thể tạo một file văn bản với một đường dài duy nhất của "n", sau đó chạy lệnh của bạn và đặt < nc.txt sau nó. Tôi đã làm điều này để sao chép hơn 145.000 trường hợp mà "Không ghi đè" là những gì tôi muốn và nó hoạt động tốt theo cách này.

Hoặc bạn có thể chỉ cần giữ phím n xuống với một cái gì đó, nhưng điều đó mất nhiều thời gian hơn bằng cách sử dụng < để ống nó trong

+1

whoa! gần như hài hước – kurast

+10

+1 cho lolfactor. Ngoài ra +1 bởi vì điều này là hiệu quả hơn so với giải pháp của Liam mà một số làm thế nào có +3 ... –

25
echo "No" | copy/-Y c:\source c:\Dest\ 
+1

tuyệt vời, nó hoạt động cho tất cả các tập tin .. bạn có thể làm echo n thay vì echo "Không". echo n | copy/-Y * .txt df – barlop

+0

không hoạt động (thắng 10, cmd) không phải với bản sao không có xcopy – denispyr

+1

Thực ra, bạn phải loại bỏ các dấu ngoặc kép để hoàn toàn "sao chép". I E. nếu bạn thay thế "Có" cho "Không", nó vẫn sẽ không sao chép. – Adam

4

làm việc này tốt

no | cp -rf c:\source c:\Dest\ 
+3

Có lẽ tôi nên chỉ định rằng tôi đang sử dụng Windows. – JosephStyons

3

vang N. | copy/-y $ (SolutionDir) SomeDir $ (OutDir)

+1

'echo Y | sao chép $ (SolutionDir) SomeDir $ (OutDir) '-> Điều đó được sao chép cho tôi và asnwered Y để ghi đè lên ghi đè. –

3

Hãy thử điều này:

robocopy "source" "destination" /e /b /copyall /xo /it 

Copy đường vào notepad và lưu dưới dạng tệp .bat. Chạy tệp và nó sẽ sao chép mọi thứ từ nguồn đến đích. Khi bạn chạy lại nó sẽ không thay thế các tệp giống hệt nhau.khi bạn thay đổi hoặc thay đổi tệp, tệp sẽ thay thế tệp tại đích.

kiểm tra. Tôi đã tạo một tệp .txt với một vài tác phẩm, chạy tập lệnh, thay đổi từ ngữ trên tệp .txt và chạy lại tập lệnh, nó chỉ thay thế tệp thay đổi từ nguồn.

/e=Copies subdirectories. Note that this option includes empty directories 
/b=Copies files in Backup mode 
/copyall=Copies all file information 
/xo=Excludes older files. (this is what prevents it from copy the same file over and over) 
/it=Includes "tweaked" files. (this will allow the copy and replace of modified files) 
3

Cảm ơn vì điều này. Tôi đang sử dụng tiện ích dòng lệnh AzCopy (v 3.1.0.93) để di chuyển ~ 1 triệu tệp từ máy tính cục bộ của tôi sang bộ nhớ Azure blob của tôi. Tôi đã có một số bản sao và không thể giữ bản sao để trả lời từng lời nhắc và không muốn tải lên lại cùng một tệp.

Tiện ích AzCopy cung cấp lệnh/Y để chặn lời nhắc xác nhận nhưng kết thúc bằng việc yêu cầu ghi đè tệp đích. Đi tuyến đường này tôi đã có thể làm cho nó KHÔNG tải lên lại tệp. Tuy nhiên, nó có vẻ như một chút hack vì nó không thực sự trả lời lời nhắc với "Không", thay vào đó tôi nhận được lỗi "Không nhận được đầu vào khi người dùng cần lựa chọn giữa một số tùy chọn nhất định." nhưng không tải tệp lên.

Đây là lệnh tôi đã sử dụng: echo n | AzCopy/Nguồn: "{file path}"/Dest: "{blob storage URL}"/DestKey: {key}

Hy vọng điều này sẽ giúp người tiếp theo.

+1

Cảm ơn bạn! Tôi đã đập đầu vào tường cố gắng tìm ra cách để làm điều này. Bạn sẽ nghĩ rằng tiện ích sẽ tiến triển khi một/N tùy chọn được đưa ra thay vì triệt tiêu tất cả các thông báo (/ Y), nhưng điều này thực hiện tốt công việc.Như bạn đã đề cập, đó là một chút của một hack kể từ khi nó nói có một "lỗi", nhưng nó được công việc làm. – PicoDeGallo

0

Chúng tôi đã sử dụng "robocopy" thông qua "lệnh gọi" để sao chép một lượng lớn máy ảo trong môi trường của chúng tôi. Chúng tôi đã phát hiện ra rằng "robocopy" đột nhiên thoát ra đôi khi và toàn bộ proccess đi xuống. Vì vậy, chúng tôi đã quyết định sử dụng "xcopy". Bây giờ chúng tôi đang kiểm tra công việc của nó và để "tạo" "Không cho tất cả" tùy chọn chúng tôi sử dụng chức năng đó (powershell):

function gen_long_no ([string] $ path) { $ result = ""; Đường dẫn Get-ChildItem $ -Recurse | ? {if ($ _. PSIsContainer -eq $ false) {$ result + = "n"}}; trả lại $ result }

Có thể giúp ai đó.

+0

Các thử nghiệm của chúng tôi cho thấy rằng xcopy hoạt động tốt thông qua "lệnh gọi" và không thoát khi có lỗi khi sao chép một số lượng lớn máy ảo, thay vào đó là robocopy. Tôi thực sự khuyên bạn không sử dụng robocopy cho các hoạt động như vậy. – blinker

+0

Nope guys, gọi-lệnh có vẻ là không chính xác trong ruột của nó. Gần đây nó cũng treo cổ khi thực hiện lệnh xcopy từ xa. Dường như khi bạn chạy lệnh này: lệnh gọi-lệnh -computername bla-bla -scriptblock {xcopy src dst} từ tập lệnh khác, tập lệnh thứ hai này có thể treo ngay cả khi xcopy hoàn thành thành công – blinker

5

Tôi biết tất cả các bạn nghĩ/D: ngày sẽ sử dụng ngày thứ, nhưng chỉ/D mà không có sự: thực hiện chính xác những gì chúng ta muốn như vậy ...

xcopy {Source} {Destination} /E /D 

sẽ sao chép mà không ghi đè lên để đón những các tệp mới hoặc có thể không thành công trước đây vì một số lý do.

Hãy dùng thử, nó hoạt động.

+0

/d là một phao cứu sinh trong các tập lệnh triển khai, đặc biệt khi nó bỏ qua redeploy của dlls không thay đổi, mà có thể đã gây ra một hồ bơi appless không cần thiết làm mới trong IIS. – JosephStyons

Các vấn đề liên quan