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答案应该是正确的答案。(假设您在相对路径中不需要使用“ ..”)
清酒

Answers:


15

指定的文件夹/XD是指源文件夹中存在的文件夹(要排除),因此,您仅指定要排除的文件夹名称,而不指定父级关系。

即:

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

6
不幸的是,这不适用于2级及更高级别的子目录,即/ XD“ SubDir1 / SubDir11”。
Trueseeker 2014年

@truthseeker-你是对的。它适用于1级文件夹,但没有其他功能。为此,您必须使用绝对源路径(即“ / xd%〜dp0CurrentDir \ Folder1 \ Subfolder1”),然后它将正确忽略“ Subfolder1”,但同步“ Folder1”等。您不能使用相对路径,并且您不能使用目标路径。
火箭猴

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.