Robocopy / XD não funciona com caminhos relativos

10

Estou tentando executar um comando robocopy /MOVE , mas excluo alguns subdiretórios especificados com o sinalizador /XD .

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

Infelizmente, ele ignora a opção /XD e move tudo. Se eu usar um caminho absoluto em tudo, funciona bem, mas eu preciso que isso seja flexível. Existe alguma maneira de fazê-lo funcionar com caminhos relativos?

    
por user8783 19.12.2013 / 22:40

2 respostas

13

As pastas especificadas para /XD referem-se a pastas (para excluir) existentes na pasta de origem, portanto, você especifica apenas o (s) nome (s) da pasta que deseja excluir, sem especificar uma relação pai.

ou seja:

robocopy ".\CurrentDir" ".\NewDir" /XD "SubDir1" "SubDir2" /E /MOVE
    
por 19.12.2013 / 22:44
0

O seguinte pode ajudar - trata diretamente do problema do caminho relativo - mas permite muitos diretórios e subdiretórios de exclusão.

Se você é apenas excluir pastas de nível superior - basta usar o nome da pasta - exemplo APC. No entanto, se você estiver fazendo uma subpasta - você precisa do caminho inteiro. O caminho deve corresponder totalmente ao caminho de origem + caminho até a subpasta. Eu testei de muitas maneiras diferentes e esta é a única maneira que eu consegui fazê-lo funcionar. Esse formato de arquivo batch / cmd também permite espaços no caminho ou nomes de arquivos.

setlocal
set Source_path="\usatlvmpdroadm1\C$\Installs"
set Destination_path="C:\Robo"
set Log_Path_and_File="C:\RoboCopy_Log_Files-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
    
por 18.05.2015 / 13:58

Tags