Robocopy / XD không hoạt động với các đường dẫn tương đối


13

Tôi đang cố chạy /MOVElệnh robocopy nhưng loại trừ một vài thư mục con được chỉ định bằng /XDcờ.

robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE

Thật không may, nó bỏ qua các /XDtùy chọn và di chuyển mọi thứ. Nếu tôi sử dụng một đường dẫn tuyệt đối trên mọi thứ, nó hoạt động tốt, nhưng tôi cần điều này để linh hoạt. Có cách nào để làm cho nó hoạt động với các đường dẫn tương đối?


3
Cần lưu ý rằng bạn có thể biến các đường dẫn tương đối thành các đường dẫn tuyệt đối với ít nỗ lực hơn người ta nghĩ, bằng cách sử dụng %CD%biến môi trường. Ví dụ: robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
gbr

Câu trả lời gbr nên là câu trả lời đúng. (cho bạn không cần phải ".." trong đường dẫn tương đối)
Sake

Câu trả lời:


14

Các thư mục được chỉ định để /XDtham chiếu đến các thư mục (để loại trừ) tồn tại trong thư mục nguồn, do đó bạn chỉ chỉ định (các) tên thư mục bạn muốn loại trừ mà không chỉ định quan hệ cha mẹ.

I E:

robocopy ".\CurrentDir" ".\NewDir" /XD "SubDir1" "SubDir2" /E /MOVE

6
Thật không may, điều này không hoạt động đối với các thư mục con ở cấp độ 2 và cao hơn tức là / XD "SubDir1 / SubDir11".
Truthseeker

@truthseeker - bạn nói đúng. Nó hoạt động cho các thư mục cấp 1, nhưng không có gì thấp hơn. Vì vậy, bạn phải sử dụng đường dẫn nguồn tuyệt đối (ví dụ: "/ xd% ~ dp0CienDir \ Folder1 \ Subfolder1"), sau đó nó sẽ bỏ qua "Subfolder1" nhưng đồng bộ hóa "Thư mục1", v.v. Bạn không thể sử dụng đường dẫn tương đối và bạn không thể sử dụng đường dẫn đích.
lửa

0

Những điều sau đây có thể giúp - nó giải quyết vấn đề đường dẫn tương đối trực tiếp - nhưng cho phép nhiều thư mục loại trừ và thư mục con.

Nếu bạn chỉ loại trừ các thư mục cấp cao nhất - chỉ cần sử dụng tên thư mục - ví dụ APC. Tuy nhiên nếu bạn đang làm một thư mục con - bạn cần toàn bộ đường dẫn. Đường dẫn phải khớp hoàn toàn với đường dẫn nguồn + đường dẫn xuống thư mục con. Tôi đã thử nghiệm nó theo nhiều cách khác nhau và đây là cách duy nhất tôi có thể làm cho nó hoạt động. Định dạng tệp bó / cmd này cũng cho phép khoảng trắng trong đường dẫn hoặc tên tệp.

setlocal
set Source_path="\\usatlvmpdroadm1\C$\Installs"
set Destination_path="C:\Robo"
set Log_Path_and_File="C:\RoboCopy_Log_Files\01-Installs C drive to Robo C drive.txt"
set ED1="APC"
set ED2="\\usatlvmpdroadm1\C$\Installs\Dell\Dell MD3420 Firmware"

robocopy.exe %Source_path% %Destination_path% /COPYALL /ZB /MIR /MT:128 /DCOPY:T /XA:SH /XD %ED1% /XD %ED2% /XJ /XJD /R:2 /W:1 /NDL /NP /TEE /LOG:%Log_Path_and_File%

endlocal
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.