我正在尝试运行 robocopy/MOVE
命令但排除用标志指定的几个子目录/XD
。
robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE
不幸的是,它忽略了该/XD
选项并移动了所有内容。如果我对所有内容都使用绝对路径,它可以正常工作,但我需要它具有灵活性。有没有办法让它与相对路径一起工作?
答案1
指定的文件夹/XD
是指源文件夹中存在的文件夹(要排除),因此您只需指定要排除的文件夹名称,而无需指定父关系。
IE:
robocopy ".\CurrentDir" ".\NewDir" /XD "SubDir1" "SubDir2" /E /MOVE
答案2
以下内容可能会有所帮助 - 它确实直接解决了相对路径问题 - 但确实允许许多排除目录和子目录。
如果您只是排除顶级文件夹 - 只需使用文件夹名称 - 例如 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