Robocopy / XD는 상대 경로와 함께 작동하지 않습니다


14

robocopy /MOVE명령 을 실행하려고 하지만 /XD플래그로 지정된 두 개의 하위 디렉토리를 제외시킵니다 .

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

불행히도 /XD옵션을 무시하고 모든 것을 이동시킵니다. 모든 것에 절대 경로를 사용하면 잘 작동하지만 융통성이 있어야합니다. 상대 경로로 작동하게하는 방법이 있습니까?


3
%CD%환경 변수 를 사용하면 생각보다 적은 노력으로 상대 경로를 절대 경로로 바꿀 수 있습니다 . 예 : robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
gbr

gbr 답변이 정답이어야합니다. (당신은 필요가 없습니다 주어진 ".."상대 경로에서)

답변:


15

에 지정된 /XD폴더는 소스 폴더 내에 존재하는 폴더 (제외)를 참조하므로 상위 관계를 지정하지 않고 제외 할 폴더 이름 만 지정하십시오.

즉 :

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

6
불행히도 이것은 레벨 2 이상의 하위 디렉토리 (예 : / XD "SubDir1 / SubDir11")에서는 작동하지 않습니다.
truthseeker

@truthseeker-당신이 맞아요. 1 수준 폴더에는 작동하지만 더 낮은 것은 없습니다. 이를 위해서는 절대 소스 경로 (예 : "/ xd % ~ dp0CurrentDir \ Folder1 \ Subfolder1")를 사용해야합니다. 그러면 "Subfolder1"을 올바르게 무시하지만 "Folder1"을 동기화합니다. 상대 경로를 사용할 수 없습니다. 대상 경로를 사용할 수 없습니다.
rocketmonkeys

0

다음은 도움이 될 수 있습니다-상대 경로 문제를 직접 해결하지만 많은 제외 디렉토리 및 하위 디렉토리를 허용합니다.

최상위 폴더 만 제외하는 경우 폴더 이름 만 사용하십시오 (예 : APC). 그러나 하위 폴더를 수행하는 경우 전체 경로가 필요합니다. 경로는 소스 경로 + 하위 폴더까지의 경로와 완전히 일치해야합니다. 나는 여러 가지 방법으로 테스트했으며 이것이 작동하도록 할 수있는 유일한 방법입니다. 이 배치 / cmd 파일 형식은 경로 또는 파일 이름에 공백을 허용합니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.