robocopy
é anunciado como o substituto de xcopy
, mas se não for possível fazer algo simples como o que eu quero, é realmente uma péssima substituição.
Qualquer nome de diretório após /xd
que corresponde é excluído. Isso faz sentido e funciona como anunciado. Parece que a qualquer momento que você der mais do que apenas um nome de diretório, ele molha a cama. Meu problema certamente não é tão único, olhando para algumas das outras pessoas na internet e seus problemas com robocopy
.
Eu tenho os seguintes diretórios:
C:\repo\SomeProject\Data <- DONT exclude this
C:\repo\SomeOtherProject\Data <- DONT exclude this
C:\repo\AnotherProject\bar <- DONT exclude this
C:\repo\Data\foo <- Exclude this
C:\repo\Data\bar <- Exclude this
C:\repo\Data\baz <- DONT exclude this
- Se eu chamar
robocopy
com/xd Data
, entãoC:\repo\SomeProject\Data
eC:\repo\SomeOtherProject\Data
também serão excluídos - Se eu chamar
robocopy
com/xd foo bar
, entãoC:\repo\AnotherProject\bar
também será excluído.
Desejo poder chamar robocopy
com /xd Data\foo Data\bar
, de modo que apenas foo
e bar
in Data
sejam excluídos.
Caminhos de arquivos absolutos não funcionarão porque o código deve ser portável e eu realmente não quero injetar caminhos absolutos para cada entrada na minha lista de exclusão de > 100. Simplesmente não parece certo.
O que parece acontecer é se eu usar /xd Data\bar
, então o robocopy o interpreta como Data\bar
, o que não é possível encontrar. Eu não sei porque um único \
é alterado para \
e qualquer permutação de \
ou /
também não funciona.
A solução
Por fim, a resposta à minha pergunta é usar xcopy
. Eu dou uma lista contendo entradas como *.cpp
, 8.vcxproj
, \Data\foo\
, \Data\bar
\ e 100 outras entradas e parece funcionar muito bem, excluindo todas as coisas que eu não quero, mantendo as coisas Eu preciso.